2014-04-17 43 views
0

試圖編寫一個構造函數,該對象將從一個對象中創建一個新的CastTest對象如果它是CastTest的一個實例,就像這樣(x是CastTest的一個實例變量):將對象轉換爲子類型時找不到符號

public CastTest(Object theTestObj) 
    { 
     if (theTestObj instanceof CastTest) { 
      //this.x = theTestObj.x; // Error: cannot find symbol: variable x ??? 
      //this.x = (CastTest) theTestObj.x; // Error: cannot find symbol: variable x ??? 
      //this.x = theTestObj.getX(); // Error: cannot find symbol: method getX() ??? 
      //this.x = (CastTest) theTestObj.getX(); // Error: cannot find symbol: method getX() ??? 
     } 
    } 

爲什麼找不到變量或方法?它們在相同的類定義中被定義。

回答

1

實例變量在聲明的引用類型上解析。 Object沒有x實例字段。正確的演員陣容

((CastTest)theTestObj).x 
// this whole expression is of type CastTest which seems to have a field x 

你有什麼,這

(CastTest) theTestObj.x; 

相當於

(CastTest) (theTestObj.x) 

它具有相同的問題,以前解釋

theTestObj.x 
相關問題