2 回答

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

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
凱文解釋了這個(gè)問(wèn)題。但是,您可以使用泛型告訴編譯器您要輸入什么類型,而不必限制類型或進(jìn)行危險(xiǎn)的強(qiáng)制轉(zhuǎn)換,因?yàn)楸WC對(duì)象的類型并不總是那么容易。
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);
}
添加回答
舉報(bào)