0

クローン配列からメソッドをキャストしようとしています。ただし、いくつかの問題が発生しています。コードは次のとおりです。

    Array1[] a = new Array1[] {
        "new Array1("exampletext", 0.5, 205)
    };

    Object[] o = a.clone();
    System.out.println(o[0].getSomething());

「元の」オブジェクトを使用すると機能します。複製されたオブジェクトは正確なコピーだと思いました。何がうまくいかないのか、またはヒントを教えてくれる人はいますか?

編集:さて、これが実際のコードです(私もそれをコンパイルすることはできません!)

Drinks[] gtrk = new Drinks[] {

    new Drinks("Drink1",            0.90,      205,        0.5 ),
    new Drinks("Drink2",            0.90,      190,        0.5 ),
    new Drinks("Drink3",            0.70,      150,        0.5 ),
    new Drinks("Drink4",            20.50,     500,        2.0 ),
    new Drinks("Drink5",            28.70,     360,        1.5 ),
    new Drinks("Drink6",            6.90,      2500,       12.0 )

};

public void objectArrayTest() {

    Object[] o = gtrk.clone();
    System.out.println(o.getName());

}
4

1 に答える 1

0

このコードを試してください(完全に機能します)、このリンクを確認してください:

class Drinks{
String name;
int i;
double d1,d2;

public Drinks(String name, double d1, int i,  double d2) {
    super();
    this.name = name;
    this.i = i;
    this.d1 = d1;
    this.d2 = d2;
}

@Override
public String toString() {
    return "Drinks [name=" + name + ", i=" + i + ", d1=" + d1 + ", d2=" + d2 + 

"]";
    }
}

public class ArrayEg {
    public static void main(String[] args) {
        Drinks[] gtrk = new Drinks[] {
                new Drinks("Drink1",            0.90,      205,        0.5 ),
                new Drinks("Drink2",            0.90,      190,        0.5 ),
                new Drinks("Drink3",            0.70,      150,        0.5 ),
                new Drinks("Drink4",            20.50,     500,        2.0 ),
                new Drinks("Drink5",            28.70,     360,        1.5 ),
                new Drinks("Drink6",            6.90,      2500,       12.0 )
            };
        Object[] obj = new Object[gtrk.length];
        System.arraycopy(gtrk, 0, obj , 0, gtrk.length);
        for(Object o:obj){
            System.out.print((Drinks)o);    
        }
    }
}

Drinks オブジェクトから何らかのメソッドを呼び出す必要がある場合は、(ループ内で)試してください

((Drinks)o).method
于 2013-06-15T17:33:36.900 に答える