Object ArrayList中的Object ArrayList,由类java

时间:2017-12-02 16:31:37

标签: java class variables object arraylist

我创建了一个包含一组对象的类,其中包含名为“ Accessories ”的字符串和布尔值

然后创建ArrayList类,然后将其添加到名为“ AccessoriesList ”的列表中,从那里输入更多数据。

然后我创建了一个Accessories对象,使用for循环接收来自ArrayList的数据。这仍然是空的反应。

我环顾四周,发现最常见的问题是变量尚未初始化。所以我尝试了仍然得到相同的结果

所以这是配件

    public static class Accessories {

    Accessories(String Accessoriesname, boolean cold, boolean warm, boolean hot, boolean rain, boolean snow, boolean ice, boolean formal, boolean informal) {
    }
    String name =null ; boolean cold; boolean warm; boolean hot; boolean rain; boolean snow; boolean ice; boolean formal; boolean informal;
}

这是 AccessoriesList

 public ArrayList createAccessories() {
    ArrayList<Accessories> Accessoriesist = new ArrayList<Accessories>();
    Accessoriesist.add(new Accessories("Bag", true, true, true, false, false, false, true, true));
    Accessoriesist.add(new Accessories("Gloves", true, false, false, true, true, true, true, true));
    Accessoriesist.add(new Accessories("Hat", true, false, false, true, true, true, false, true));
    Accessoriesist.add(new Accessories("Poncho", false, true, true, false, false, false, false, true));
    Accessoriesist.add(new Accessories("Scarf", true, true, false, true, true, true, true, true));
    Accessoriesist.add(new Accessories("Sunglasses", false, true, true, false, false, false, true, true));
    Accessoriesist.add(new Accessories("Tie", true, true, true, true, true, true, true, true));

    Accessories getAccessories =null;
    String getname = null;
    for (int i = 0; i < Accessoriesist.size(); i++) {
        getAccessories =  Accessoriesist.get(i);
        getname = getAccessories.name;
        System.out.println("this is the name : " + getname);
        System.out.println("this is the Accessoriesist : " + Accessoriesist.get(i));
    }
    return Accessoriesist;
}

我没有收到信息,而是收到了哈希码。

我正在尝试将一个附件对象(原始)从ArrayList抛出到另一个附件对象(新)中。我正在尝试从附件对象(新)中提取数据

1 个答案:

答案 0 :(得分:0)

你有两个问题:

首先,构造函数永远不会将传递给它的属性复制到类中:     附件(String Accessoriesname,boolean cold,boolean warm,boolean hot,boolean rain,boolean snow,boolean ice,boolean formal,boolean informal){     }

将构造函数视为具有可变参数的方法调用:在这种情况下,在大括号{}之间不执行任何操作。 Java为您提供了this关键字来引用类实例的属性。因此,您需要将传递给构造函数的参数显式复制到类实例的属性

Accessories(String Accessories name, boolean cold, boolean warm, boolean hot, boolean rain, boolean snow, boolean ice, boolean formal, boolean informal) {
    this.name = name
    this.cold = cold
    this.warm = warm
    this.hot = hot
    this.rain = rain
    this.snow = snow
    this.ice = ice
    this.formal = formal
    this.informal = informal
}

其次,因为这行代码将String与对象连接在一起,所以它将调用Accessories对象上的.toString()方法:

    System.out.println("this is the Accessoriesist : " + Accessoriesist.get(i));

.toString()方法的默认实现是从Object超类继承的。如果您要覆盖它,只需使用与Object.toString()

相同的方法签名向您的类添加方法
public String toString() {
    StringBuilder sb = new StringBuilder(this.name);
    if (ice) {
        sb.append(" (ice)")
    }
    // other properties
    return sb.toString()
}

最后几点说明:

  • 在Java中使用CamelCase是常规的。对于课程,我们使用a 第一个字母(MyClass)和类成员的大写字母 变量和参数我们使用第一个小写字母 信(myClass)。那么你的ArrayList<Accessories> Accessoriesist 在此之后会ArrayList<Accessories> accessoriesList 惯例。
  • 让你所有人与众不同可能是一个好主意 属性(冷,温,冰,雪等)enum称为某物 比如Properties和你的附件类包含一个 列表。

欢迎使用Java!