2016-09-23 67 views
0

我想要做的就是這樣。我的問題是如何在內部調用tm.test。如何在聲明實例之前將類方法作爲參數傳遞?

// TestMain is a class implemented handler 

public void outer() { 
    inner(TestMain::test); // call inner 
} 

public void inner(handler h) { 
    TestMain tm = new TestMain(); 
    //invoke tm.h(), i.e. invoke tm.test() in this example 
} 

public interface handler<M> { 
    void entitySelector(); 
} 
  • 我知道如何在TM在方法外,即宣佈稱tm.test在內部傳遞函數爲TM ::測試
  • 但是我有我每次打電話的時間來聲明實例內。

回答

1

簡單地說:你不能。即使有可能,你也不應該這樣做。

有「最驚喜的原則」:你這樣做不是人們閱讀你的代碼告訴你「WTF?!」因爲你的代碼讓他們感到驚訝。

換句話說:你應該退一步,看看你的設計真的是有道理的這種方式。例如,您不能使用固定的tm實例;一個坐在你班上的領域;而不是你的方法中的局部變量?

+0

謝謝你,這是'不'。 – Cuero

相關問題