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

问题描述 投票:0回答:1

我正在写一个图书馆管理系统。在登录过程中,我有一个日志(通过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();
    }
java inheritance polymorphism
1个回答
0
投票

你可以使用 AdminUser.class.

public boolean isAdmin(final User u)
{
    return u.getClass() == AdminUser.class;
}

-1
投票

只是说说而已, instanceof 正确工作。

public boolean isAdmin( User u )
{
    return (u instanceof Admim);
}

但您可以使用 class 关键字。

public boolean isAdmin( User u )
{
    return u.class == AdminUser.class;
}

但我建议使用 instanceof.

© www.soinside.com 2019 - 2024. All rights reserved.