Image

Сравнение классов в методе

А как вообще в методе узнать, является ли некий объект инстансом какого-то конкретного класса? То есть, например, есть у меня два класса ролей - User1 и User2, наследуемые от одного AbstractUser. И есть третий класс, например, MySession, с полем 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))

всегда дают истину.

Тыкните пальцем, где я не прав.