Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t从克隆数组强制转换方法_Java_Arrays_Object_Casting_Clone - Fatal编程技术网

Java Can';t从克隆数组强制转换方法

Java Can';t从克隆数组强制转换方法,java,arrays,object,casting,clone,Java,Arrays,Object,Casting,Clone,我正在尝试从克隆数组强制转换方法。但是,我遇到了一些问题。 代码如下: Array1[] a = new Array1[] { "new Array1("exampletext", 0.5, 205) }; Object[] o = a.clone(); System.out.println(o[0].getSomething()); 当我使用“原始”对象时,它工作。我以为克隆的对象是一个精确的副本。 有人能告诉我哪里出了问题,或者给我一些提示

我正在尝试从克隆数组强制转换方法。但是,我遇到了一些问题。 代码如下:

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

    Object[] o = a.clone();
    System.out.println(o[0].getSomething());
当我使用“原始”对象时,它工作。我以为克隆的对象是一个精确的副本。 有人能告诉我哪里出了问题,或者给我一些提示吗

编辑:好的,这是真正的代码(我也不能编译它!)

尝试使用此代码(其工作原理完美)检查以下内容:

如果需要从饮料对象调用某个方法,请尝试(在循环内)


这甚至不会编译,因为
o
是对象[],所以对象[0]是
对象
而对象没有该方法。其中没有强制转换。您提供的代码无法编译(首先,它包含奇数“),而且您还没有告诉我们Array1是什么。请尝试发布真实代码。您需要对此进行反思;或者您需要可编译代码和系统编译器。
饮料[]
不是
对象[]
。数组也没有
getName()
method。getName()方法是在另一个类中定义的。我原以为对象与数组相同。不过谢谢你的帮助,我会找到更好的解决方案的!非常感谢,帮了我大忙!
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());

}
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)o).method