Reputation: 61
i'm trying to cast my child user class but isn't works :/
I have an class declared with "User" name and a child class declared with "FUser", the FUser class:
public class FUser extends User {
public static void main(String[] args) {
User user = UserManager.generateUser(
"HAHAHA",
UUID.randomUUID()
);
System.out.println(user.toString());
FUser fUser = (FUser) user;
}
public FUser(User user) {
super(
user.getId(),
user.getName(),
user.getDisplayName(),
user.getUniqueId(),
user.getEmail(),
user.getPassword(),
user.getDiscordId(),
user.isTwoFactorAuthenticationEnabled(),
user.getTwoFactorAuthenticationCode(),
user.getCreatedAt(),
user.getFirstLogin(),
user.getLastLogin(),
user.getLastAddress(),
user.getLastLobbyId(),
user.getLanguageId(),
user.getTwitterAccessToken(),
user.getTwitterTokenSecret(),
user.getGroups(),
user.getPreferences(),
user.getFriends(),
user.getIgnored(),
user.getReports(),
user.getSkins(),
user.isChangingSkin(),
user.isWaitingTabListRefresh()
);
}
}
Executing this class the console shows this message:
{"unique_id":3ac5b89f-7b44-4c82-9631-831315d7962c,"last_login":null,"last_lobby_id":null,"name":"hahaha","created_at":1584532460820,"id":null,"last_address":null,"language_id":1,"display_name":"HAHAHA","email":null,"first_login":null,"discord_id":null}
Exception in thread "main" java.lang.ClassCastException: com.redecommunity.common.shared.permissions.user.data.User cannot be cast to com.redecommunity.factions.user.FUser
at com.redecommunity.factions.user.FUser.main(FUser.java:20)`
Upvotes: 1
Views: 62
Reputation: 12350
generateUser
method returns User
class object. You can't cast User
class object to FUser
class because FUser
is not parent class of User
. Thats why it throws ClassCastException
.
Upvotes: 2
Reputation: 4329
As far as I understand your UserManager
produces a User class. If you need it to be actually a FUser, you need to pass it to a constructor manually:
User user = new FUser(UserManager.generateUser(
"HAHAHA",
UUID.randomUUID()
));
Now user will be statically typed as User
, but will actually keep a reference to FUser
, so later the conversion of user
to FUser
type will not fail.
Upvotes: 1