我正在编写一个图书馆管理系统。对于登录过程,我有一个日志(通过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
.