0

配列から項目を印刷しようとしていますが、プログラムを実行すると、 Orders:testorder@4, testorder@5などが表示されます。123 Buy と表示されるように修正する方法についてのヒントはありますか?

package hej;


public class TestOrder {
public static void main(String[] args) {

    Order order1 = new Order("123", "Buy");
    Order order2 = new Order("456", "Sell");
    Order order3= new Order("231", "Buy");
    Order order4= new Order("987", "Buy");


    OrderRegister orderregister = new OrderRegister();


    orderregister.addOrder(order1);
    orderregister.addOrder(order2);
    orderregister.addOrder(order3);
    orderregister.addOrder(order4);


    System.out.println("Orders: ");        
    for (int i = 0; i < orderregister.getArrayList().size(); i++){
        System.out.println(orderregister.getArrayList().get(i) + "-");

    }
}   

}

4

5 に答える 5

7

クラスにtoString()メソッドが定義されていないためです。Order

toString()Java がオブジェクトを印刷しようとするとき、オブジェクト スーパークラスから使用するメソッドが見つからない場合は、そのオブジェクトのメソッドを呼び出そうとしtoString()ます。

そして、オブジェクトtoString()はデフォルトでこれを行います:

getClass().getName() + '@' + Integer.toHexString(hashCode())

これはまさにあなたが出力として見ているものです。

于 2013-01-09T17:40:02.193 に答える
2

メソッドをTestOrderオーバーライドしました。toString()

于 2013-01-09T17:40:16.780 に答える
1

toString()他の人が示唆しているように、メソッド(例では暗黙的に呼び出されます)をオーバーライドすることができます/すべきです。

例えば:

@Override public String toString()
{
return String.format("%s , %s", this.getID(), this.getAction());
}
于 2013-01-09T17:50:51.953 に答える
1

オブジェクトを文字列と連結すると (System.out.println(...)ステートメントのように)、toString()オブジェクトでメソッドが呼び出され、最初に文字列に変換されます。

クラスのtoString()メソッドをオーバーライドして、注文の文字列形式を生成する必要があります。Order

于 2013-01-09T17:40:26.563 に答える
1

Orderを に変換する他の方法を Java に伝えていないことを考えると、これはまさに期待どおりの結果ですStringOrder.toString()Java で を に変換する特定の方法を使用する場合はオーバーライドOrderしますString

于 2013-01-09T17:40:37.220 に答える