2 回答

TA貢獻1833條經驗 獲得超4個贊
如果你有一個 type 的變量Object,那么編譯器只“知道”類中的函數Object。
如果要使用更特定類型的函數,則必須強制轉換變量,如下所示:
Bird z = (Bird) x.obj;
println(z.size);
請注意,這實際上并沒有改變對象的類型,它只是告訴編譯器期望什么類型。如果變量實際上不是 a Bird,那么這將失敗。
或者您可以將obj變量更改為更具體的類型:
class Test {
int num;
public Bird obj;
public Test(int num, Bird obj){
this.num = num;
this.obj = obj;
}
// ...
現在您可以從Bird類中訪問函數:
println(x.obj.size);
無恥的自我推銷:這里有一個關于在 Processing 中創建類的教程。

TA貢獻1824條經驗 獲得超5個贊
凱文解釋了這個問題。但是,您可以使用泛型告訴編譯器您要輸入什么類型,而不必限制類型或進行危險的強制轉換,因為保證對象的類型并不總是那么容易。
class Test<T> {
int num;
public T obj;
public Test(int num, T obj){
this.num = num;
this.obj = obj;
}
int getNum(){
return num;
}
}
class Bird {
public int size;
public Bird(int size){
this.size = size;
}
public void setSize(int size){
this.size = size;
}
public int getSize(){
return size;
}
}
void setup(){
size(100, 100);
Bird y = new Bird(7);
Test<Bird> x = new Test<>(4, y);
}
添加回答
舉報