2013-10-03 132 views
3

我有一個靜態函數,它接受一個叫X.訪問陰影變量從匿名類

在這種靜態函數創建一個匿名類參數。這個類應該有一個成員變量,也稱爲X.

從匿名類的函數中,如何訪問函數的參數X?

舉例說明:

class Test { 

    static void func(final List<T> X) { 

     new Test() { 
      final T[] X = ?.X.toArray(); 
     }; 
    } 
} 

在我真正的代碼,我要創造我從列表中參數的匿名類(通過toArray()在匿名類的初始化)一個數組,我想重新使用相同的變量名稱,而不是使用匈牙利符號來區分它們。

+1

爲什麼不添加另一個名稱不是'X'的靜態函數內部的變量,然後從匿名類中調用它? – m1o2

+0

@ m1o2是的,但它是大量的變量名稱相近,只是表示我試圖清理的替代數據類型。如果我可以更改變量的類型,我的代碼將會更清晰。 – Will

回答

5

這在Java中是不可能的。函數參數沒有像「this」這樣的「名稱空間」,您可以使用它來表示您指的是哪個變量。

唯一的解決方案是創建一個任意前綴,如外部參數outerX或內部參數xAsArray