2017-12-06 15 views
0

メソッド内に同じ名前の変数が2つあり、そのメソッドの内部に匿名の内部クラスがあります。どのように名前を変更せずに、匿名クラス内のメソッド1にアクセスすることができますか?同じ名前の変数を持つ匿名の内部クラス内のローカルメソッド変数にアクセスする

public void doSomething() { 
    final String s = "method string"; 
    new Runnable() { 
     public void run() { 
     String s = "anonymous inner class string"; 
     // how can I access the method string here without the need to rename any of the variables 
     } 
    }; 
} 

これは変数の名前を変更することで解決できますが、よりスマートな方法があるかどうかを知りたいと思います。

+1

変数の名前を変更するような気がします*ここで行うことは賢明です - 他のものとは別に可読性が向上します。 –

+0

あなたがアクセスすることはできません.. –

+0

私はそれが可能かどうかだけ考えていた。 –

答えて

0

変数の名前を変更したくない場合は、method string変数にアクセスする別の方法を作成できます。このように:

final String s = "method string"; 
Runnable runnable = new Runnable() { 
    public void run() { 
     String s = "anonymous inner class string"; 
     String outerS = getS(); 
     System.out.println(outerS); 
     System.out.println(s); 
     // how can I access the method string here without the need to rename any of the variables 
    } 

    public String getS() { 
     return s; 
    } 
}; 

方法は、(GETS)method string変数にアクセスするには、ここで作成されます。

+0

私はOPが匿名クラスから "メソッドString"にアクセスしたいと思っていますが、OPが探しているものについても同様のことができるかもしれません。 – senerh

関連する問題