如何找到超类对象的子类?(爪哇)



我正在编写一个图书馆管理系统。对于登录过程,我有一个日志(通过ArrayList实现(,其中包含类型为User的对象。User是子类型、LibrarianAdmin(所有用户必须是其中一个(的超类。如何检查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.

最新更新