我正在写一个图书馆管理系统。在登录过程中,我有一个日志(通过ArrayList实现),其中包含类型为User的对象。User是Librarian和Admin两个子类型的超类(所有用户必须是其中之一)。我如何检查User的实例是否属于admin类型?下面的代码是我之前试过的。问题是我在AdminUser构造函数中有一些代码,我不想让它们不必要地执行。我只需要看看传递的用户是否是admin类型。任何帮助都将被感激,谢谢。
public boolean isAdmin( User u )
{
AdminUser a = new AdminUser();
Class<? extends AdminUser> c = a.getClass();
return u.getClass() == a.getClass();
}
你可以使用 AdminUser.class
.
public boolean isAdmin(final User u)
{
return u.getClass() == AdminUser.class;
}
只是说说而已, instanceof
正确工作。
public boolean isAdmin( User u )
{
return (u instanceof Admim);
}
但您可以使用 class
关键字。
public boolean isAdmin( User u )
{
return u.class == AdminUser.class;
}
但我建议使用 instanceof
.