简体   繁体   English

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

[英]How to find subclass of superclass object? (Java)

I'm writing a library management system.我正在写一个图书馆管理系统。 For the login process, I have a log (implemented via ArrayList ) that contains objects of type, User .对于登录过程,我有一个日志(通过ArrayList实现),其中包含User类型的对象。 User is a superclass for the subtypes, Librarian and Admin (all users must be one or the other). User是子类型LibrarianAdmin的超类(所有用户必须是其中之一)。 How do I check to see if an instance of User is of type Admin ?如何检查User的实例是否属于Admin类型? The code below is what I tried before.下面的代码是我之前尝试过的。 The issue is that I have code in the AdminUser constructor that I don't want executed unnecessarily.问题是我不想在不必要的情况下执行AdminUser构造函数中的代码。 I just need to see if the passed user is of type, Admin .我只需要查看传递的用户是否属于Admin类型。

public boolean isAdmin( User u )
{
    AdminUser a = new AdminUser();
    Class<? extends AdminUser> c = a.getClass();
    return u.getClass() == a.getClass();
}

You can use AdminUser.class .您可以使用AdminUser.class

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

Just saying, instanceof works correctly.只是说, instanceof工作正常。

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

But you can use the class keyword.但是您可以使用class关键字。

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

But I recommend using instanceof .但我建议使用instanceof

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM