2017-07-24 40 views
-2

我想玩類實例化和this在其他地方實例化的類,這用於訪問它

在下面的例子中,testresult類將被實例化和存儲。將使用 this將該類實例作爲參數傳遞給另一個類。

這是this的正確用法,因爲類在其他地方被實例化了嗎? 不確定爲什麼我看到錯誤爲「構造函數testfail(new Handler(){})未定義」。

代碼片段:

public class testmain { 
    private testresult tr; 
    private testfunc tf; 

    public testmain() { 
     tr = new testresult(); 
     tf = new testfunc(tr); 
    } 
} 

public class testfunc { 
    private testresult storeit; 

    public testfunc(testresult inst) { 
     storeit = inst; 
    } 

    // this will be running as seperate thread running forever. 
} 

public class testresult { 
    private testfail tp; 

    public void function() { 
     tp = new testfail(this); //----> error new Handler(){} undefined 

    } 
} 

public class testfail { 
    public testfail(testresult tr) { 
     /// 
    } 
} 

編輯:該錯誤是由於內部類

 public class testresult { 
      private testfail tp; 
       private class test { 
        public void function() { 
        tp = new testfail(this); ----> error 
        // new Handler(){} undefined 

          } 
         } 
       } 
+0

錯誤具體是,你不必有處理程序對象作爲參數的構造函數。這是因爲你對'this'的引用可能是指稱爲'function()'的函數。 作爲一個側面說明,像你這樣的類之間的循環引用不是一個偉大的設計,應該重新設計。 –

+0

是的,我在代碼中的另一個私有類中寫了function(),因此「this」指的是內部私有類,而不是我想要的那個。 – cyne

回答

0

書面,你的代碼進行編譯。因爲testfail接受參數testresult,使用this將工作,即使它是尷尬的,而不是一個通常看到。

除非您通過引入另一個接受Handler作爲參數的構造函數否定您的testfail構造函數,否則會出現此編譯失敗。

舉個例子:

public class testfail { 
    public testfail(testresult tr) { 
     /// 
    } 

    public testfail(Handler hr) { 

    } 
} 
+0

該類只有一個構造函數,所以我不確定它如何被未定義的構造函數覆蓋。在java中會有隱藏的構造函數嗎?此外,我正試圖想出設計來避免單身。所以可能這些調用看起來有點尷尬。 – cyne

相關問題