所以我試圖做一個(不同的)對象的數組(在'三角'類中定義的那些對象之一),在弄亂它一段時間後,這是我有:將對象類型的對象複製到特定類型的對象中
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