簡體   English   中英

使用參數構造器實現的Java內部類Dirclty?

[英]Java Inner-Class direclty implemented with Parameter Constructor?

通常我按如下方式實現我的Runnables(直接實現內部類):

Runnable updateRunnable = new Runnable() {

    public void run() { 
    }
}

Java中是否有通過以下方式在構造函數中傳遞任何參數來實現Class的任何工作方式?

Runnable updateRunnable = new Runnable(locale) {

    Locale locale = null;

    public Runnable(Locale locale){
        this.locale = locale
    }

    public void run() { 
    }
};

==>我的目標是擁有一個直接實現的內部類,但是我想傳遞一個參數。

做到這一點的最佳解決方案是什么(上面的示例似乎不起作用????)是唯一與getter setter一起工作或將類實現為“常規”內部類的唯一可能性(未實現不透明)。

非常感謝你! 一月

您可以執行類似的操作:

final Locale locale;
Runnable r = new Runnable() {
    public void run() {
        // have direct access to variable 'locale'
    }
};

要注意的重要一點是,您傳遞的Locale必須是final Locale ,以便您能夠執行此操作。

您必須以某種方式初始化locale才能進行編譯。

另一個選擇是使用靜態內部類。

public class MyClass {

    public void someMethod() {
         Runnable runnable = new MyRunnable(someLocaleHere);
    }

    private static class MyRunnable implements Runnable {
         Locale locale = null;

         private MyRunnable(Locale locale) {
             this.locale = locale;
         }

         public void run() {
         }
    }
}

根據您對事物的看法,此方法的缺點是MyRunnable無法像這里描述的其他技術一樣訪問最終的局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM