-3

これをうまく説明するのは難しいですが、できる限りのことをします。オブジェクトの配列リストがあります。これらのオブジェクトの内部には属性があります。すべてが 1 つのクラス内にあるのではなく、すべて別個のクラスです。このようなものを扱うのはこれが初めてで、構文が正しいかどうかわかりません。バイトコードではなく、配列リスト内のものを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

最初に、オブジェクト A とオブジェクト B の toString() メソッドをオーバーライドできます。次に、以下のように、リストを単純に繰り返し、リスト内のオブジェクトを println できます。

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

実際には、要素の文字列表現を出力するために囲んでいる型の を自動的に呼び出すため、 attra,attrab を返すクラスでオーバーライドする必要がありますtoString()ObjectAObjectBArrayListtoString

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

于 2013-10-02T09:23:41.657 に答える
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 に答える