【问题标题】:How do I create some objects to store in an arrayList, which is a attribute of sub class, from a parent class in Java?java - 如何从Java中的父类创建一些对象以存储在arrayList中,这是子类的属性?
【发布时间】:2019-03-24 00:25:47
【问题描述】:

所以我有 3 个类,Lair、LairLocation 和 Minion。我创建了一个 ArrayList,它应该存储 Minion 对象,这是 LairLocation 的一个属性。我应该从父类 Lair 创建一些对象以存储在 ArrayList 中。 LairLocation 和 Minion 以及 Lair 的子类。

每当我尝试创建对象以存储在父级的 ArrayList 中时,我都会收到一条错误消息,提示“无法解析 minion”并告诉我创建一个局部变量等。请帮助

LairLocation 

'''
public class LairLocations extends Lair
{
        public static ArrayList<Minion> minions = new ArrayList<Minion>();
}
'''

Lair

'''
public class Lair
{
        public void createMinions() 
    {
        minions.add("12", "Mine", "Me");//This is giving me the error 
    }
}
'''

Minion
'''
public class Minion extends Lair
{

    private String id;
    private String fName;
    private String lName;

    public Minion(String Id, String fName, String lName) 
    {
        this.id = id;
        this.fName = fName;
        this.lName = lName;
    }
}
'''

【问题讨论】:

    标签: java class object arraylist initialization


    【解决方案1】:

    您正在尝试从其父类访问子类的字段。这种方式行不通。

    您只能访问父类的字段(如果它们是公共的或受保护的)。

    因此,您要么必须将 minions 字段移动到父类 Lair(顺便使其成为非静态),要么通过 LairLocation 类访问此对象:LairLocation.minions()(如果字段应该是静态的)。

    另外,这行代码不正确:minions.add("12", "Mine", "Me");

    add() 方法只接受一个元素。

    应该是:minions.add(new Minion("12", "Mine", "Me"));

    【讨论】:

      【解决方案2】:

      你必须打电话给new Minion() 来获得一个新的奴才。

      minions.add( new Minion( "12", "Mine", "Me") );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-17
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-13
        相关资源
        最近更新 更多