void function_ab(){
if ( a == true){
final Class_A obj = new Class_A("a"); //This is an example scenario, so I couldn't create a setter to pass in "a" instead of passing it into Contructor.
}else{
final Class_A obj = new Class_A("B");
}
// the code below will access obj object in Inner class.
}
宣言後にobjにアクセスする必要があるのですが、ifブロックで宣言されているため、それ以降はアクセスできません。私はこのようなこともできません:
void function_ab(){
final Class_A obj = null;
if ( a == true){
obj = new Class_A("a"); //final variable cannot be changed.
}else{
obj = new Class_A("B");
}
// the code below will access obj object in Inner class.
}
上記のコードは無効です。それを機能させる唯一の方法は、obj変数をクラス変数として宣言することですか? その関数でのみ使用されるため、そのように宣言することは避けようとしています。
これを解決するためのより良い方法があれば教えてください。