Java 如何访问局部内部类中的局部变量具有类似于局部变量名称的字段名
如何访问局部变量Java 如何访问局部内部类中的局部变量具有类似于局部变量名称的字段名,java,Java,如何访问局部变量 void do1() { final int i = 1; // (*) class A { int i = 2; void do2() { //how to access local variable i (*) ? } } } 由于类变量对其进行了阴影处理,因此无法执行此操作。克服此问题的最简单方法是重命名其中一个变量。这里有两个选项: 将外部i值传递给A class Ma
void do1() {
final int i = 1; // (*)
class A {
int i = 2;
void do2() {
//how to access local variable i (*) ?
}
}
}
由于类变量对其进行了阴影处理,因此无法执行此操作。克服此问题的最简单方法是重命名其中一个变量。这里有两个选项: 将外部
i
值传递给A
class Main {
public static void main(String[] args) {
new Main().do1();
}
void do1() {
final int i = 1; // (*)
class A {
A(int outerI) {
this.outerI = outerI;
}
private int outerI;
int i = 2;
void do2() {
System.out.println(outerI); // I want 1 here.
}
}
new A(i).do2();
}
}
或使用合理的变量名:
class Main {
public static void main(String[] args) {
new Main().do1();
}
void do1() {
final int i = 1; // (*)
class A {
int j = 2;
void do2() {
System.out.println(i);
}
}
new A().do2();
}
}
请为您的问题添加更多解释。简单地说:您不能,因为
i
是本地的。但是您可以在对象创建时将a
的构造函数添加到handi
中。@clcto 1)代码在我的IDE(IntelliJ)中“原样”编译,2)不,i
和这个。i
指a
的i
,而不是do1()
中的局部变量i
,有没有办法访问DO1方法中的局部变量i?@ShenAu是的,创建一个接受i
的构造函数,并调用它来创建a
的对象。