第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將對(duì)象傳遞給類時(shí),如何訪問(wèn)它的變量/函數(shù)?

將對(duì)象傳遞給類時(shí),如何訪問(wèn)它的變量/函數(shù)?

慕勒3428872 2022-11-02 16:57:33
我希望這聽(tīng)起來(lái)不會(huì)太愚蠢并且有意義。class Test {  int num;  public Object obj;  public Test(int num, Object 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 x = new Test(4, y);   //x.obj.size does not work   //x.obj.getSize() does not work }所以我有這兩個(gè)文件。第一個(gè)有類,第二個(gè)實(shí)際運(yùn)行它。傳入對(duì)象后,嘗試訪問(wèn)該類的變量或函數(shù)不起作用。有沒(méi)有辦法使這項(xiàng)工作?我最初試圖找到一種方法來(lái)制作函數(shù)的 ArrayList(沒(méi)有 Lambda),因?yàn)檫@變得徒勞無(wú)功,我考慮過(guò)改變我的方式。我也嘗試過(guò)制作public Object obj;,public Bird obj;但這并沒(méi)有改變?nèi)魏螙|西。我在正確的軌道上嗎?有沒(méi)有一個(gè)好方法來(lái)做這樣的事情?我還要注意,這是在處理 3.5 中編寫(xiě)的。它就像 Java 的語(yǔ)法變化很小,所以這就是為什么有些東西看起來(lái)不正確的原因。這也是 Lambda 不起作用的原因。
查看完整描述

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)建類的教程。


查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
滄海一幻覺(jué)

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);

}


查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 2 回答
  • 0 關(guān)注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)