Сравнение классов в методе
А как вообще в методе узнать, является ли некий объект инстансом какого-то конкретного класса? То есть, например, есть у меня два класса ролей - User1 и User2, наследуемые от одного AbstractUser. И есть третий класс, например, MySession, с полем
Самый очевидный способ, казалось бы, - использовать оператор instanceof. Но только вот он вторым операндом принимает имя типа, а не класс, то есть такое:
не прокатывает.
Соответственно, нужно сравнивать классы. Но по непонятной мне причины и
и
и даже
всегда дают истину.
Тыкните пальцем, где я не прав.
AbstractUser currentUser. Так вот как написать метод для класса MySession, в который можно было бы передать тип User1 или User2 и узнать, является ли текущий пользователь инстансом соответсвующего типа?Самый очевидный способ, казалось бы, - использовать оператор instanceof. Но только вот он вторым операндом принимает имя типа, а не класс, то есть такое:
public boolean verifyUser(Class c) {
return (this.currentUser instanceof c)
}не прокатывает.
Соответственно, нужно сравнивать классы. Но по непонятной мне причины и
return (this.currentUser.getClass == c)
и
return (this.currentUser.getClass.equals(c))
и даже
return (c.isInstance(this.currentUser))
всегда дают истину.
Тыкните пальцем, где я не прав.
