所以我试图做一个(不同的)对象的数组(在'三角'类中定义的那些对象之一),在弄乱它一段时间后,这是我有:将对象类型的对象复制到特定类型的对象中
public class ShapeContainer {
private Object objects [];
private int _size;
public static final int init_size = 3;
public ShapeContainer(ShapeContainer other){
this.objects = new Object[other.objects.length];
this._size = other._size;
for(int i=0; i<_size ;i++){
if (other.objects[i].getClass().equals(Triangle.class)){
this.objects[i] = new Triangle(other.objects[i]);
}
}
}
}
对于工作我做了在三角类一个新的构造(注:三角形是内置了3个对象:点P1,P2点,点p3。每个Point对象都由2个双变量构成:x,y):
public Triangle (Object obj){
this.p1 = new Point(obj.p1);
this.p2 = new Point(obj.p2);
this.p3 = new Point(obj.p3);
}
现在问题是我不能引用obj.p 1/obj.p2/obj.p3,因为“Object obj”未被识别为三角形对象。
所以基本上,有没有办法将通用对象识别为特定对象?如果没有,你如何处理?
使用实际类型('Triangle')作为你的数组变量。如果您需要保存多种不同类型的图形,请创建一个“Shape”接口或抽象类并使用“Triangle extends Shape”。 – chrylis
您的总方法已关闭。你根本不应该使用Object类型。为什么不用Point来代替? –
你试图以错误的方式定义拷贝构造函数。只需使用Triangle作为阵列,你就会好起来的。或者定义一个接口(或一个抽象类)并实现/扩展它们。同时检查instanceof操作符(如果条件有点奇怪)。 – elbuild