这很难描述,但我会尽我所能。我有一个对象的arraylist。这些对象内部是属性。而不是一个类中的所有内容,它们都是单独的类。这是我第一次使用这样的东西,我不确定我的语法是否合适。我正在尝试让println打印出arraylist中的内容,而不是字节码。
//main.java
public class Main {
public static void main(String[] args) {
world w = new world();
System.out.println(w.list);
}
}
//world.java
public class world {
ArrayList<object> list = new ArrayList<>;
public void makeObjectA{
list.add(new ObjectA())
}
public void makeObjectB{
list.add(new ObjectB())
}
@Override public String toString () {
ObjectA obja = new ObjectA();
ObjectB objb = new ObjectB();
return "A: " + obja.getattra() + ", B: " + objb.getattrb();
}
}
//object.java
public class object {
}
//ObjectA.java
public class ObjectA extends object {
private int attra = 10;
public int getattra() {
return attra;
}
public void setattra(int attra) {
this.attra = attra;
}
}
//ObjectB.java
public class ObjectB extends object {
private String attrab = "Ten";
public String getattrb() {
return attrb;
}
public void setattrb(String attrb) {
this.attrb = attrb;
}
}
输出打印出字节码。我不确定我做错了什么(可能是语法无处不在)。请帮忙吗?
答案 0 :(得分:0)
您正在调用toString()
的{{1}}。您应该做的是调用班级ArrayList
的{{1}}。
toString()
答案 1 :(得分:0)
首先,您可以覆盖对象A和对象B的toString()方法。然后,您可以简单地遍历列表并打印列表中的对象,如下所示。
for (Object a : myList)
System.out.println(a);
答案 2 :(得分:0)
您实际上需要覆盖toString()
,ObjectA
类中的ObjectB
,这将返回attra,attrab,因为ArrayList
会自动调用toString
封闭类型打印元素的字符串表示。