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