-3

这很难形容,但我会尽我所能。我有一个对象数组列表。这些对象内部是属性。它们不是一个类中的所有内容,而是单独的类。这是我第一次使用这样的东西,我不确定我的语法是否正确。我正在尝试让 println 打印出数组列表中的内容,而不是字节码。

//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;
    }
}

输出打印出字节码。我不确定我做错了什么(可能是无处不在的语法)。请帮忙?

4

3 回答 3

0

你正在调用toString()你的ArrayList. 你应该做的是调用toString()你的类world

public static void main(String[] args) {
        world w = new world();
        System.out.println(w);
    }
于 2013-10-02T09:13:12.757 回答
0

您实际上需要toString()在您的ObjectA,ObjectB类中进行覆盖,这将返回 attra,attrab,因为它会ArrayList自动调用toString封闭类型的 来打印元素的字符串表示形式。

https://stackoverflow.com/a/13028580/985143

于 2013-10-02T09:23:41.657 回答
0

首先,您可以覆盖对象 A 和对象 B 的 toString() 方法。然后您可以简单地遍历您的列表并打印列表中的对象,如下所示。

    for (Object a : myList)
    System.out.println(a);
于 2013-10-02T09:17:03.167 回答