有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将ChildClass对象添加到ArrayList<BaseClass>

如果我们有一个属性为usernamepasswordUser基类

和一个子类SpecialUser,带有一个额外的属性special

我知道我可以声明ArrayList<User> users = new ArrayList<User>();,然后将SpecialUser对象添加到users,但我只能通过这种方式访问从基类(usernamepassword)继承的属性

有没有办法将SpecialUser添加到ArrayList中,并能够访问special属性?还是应该分开存放

亲切的问候


共 (1) 个答案

  1. # 1 楼答案

    如果你真的必须这样做,你可以用instanceof

    User user = users.get(0);
    if (user instanceof SpecialUser) {
        SpecialUser sUser = (SpecialUser) user; // class casting
        sUser.getSpecial(); // whatever subclass call you need
    }
    

    你真的需要这个吗?好的多态性是关于在子类中使用User-s方法和do一些特殊的东西

    通常我们更喜欢没有instanceof的代码。但有时这是正确的选择。这取决于你的实际问题