public class MyClass {
int x=9;
public static void main(String args[]) {
MyClass myClass = new MyClass();
myClass.test();
}
public void test(){
int x=10;
class InnerClass{
int x = 11;
void print(){
int x = 12;
System.out.println(x);
System.out.println(this.x);
System.out.println(MyClass.this.x);
System.out.println("MyClass => test() => x :" + "?");
}
}
InnerClass innerClass = new InnerClass();
innerClass.print();
}
}
如何在InnerClass test()
方法中调用MyClass print()
方法局部变量 x 。我可以在上一个System.out.println()
方法中代替?编写内容,以获取test()
x 的值。
答案 0 :(得分:1)
不幸的是Java
你无法做到。
访问x
中MyClass::test
的唯一方法是将内部类和内部类方法中的两个变量重命名为其他变量。
没有必要重命名外部class
字段x
,因为InnerClass::print
会考虑最内部范围内的变量。
虽然此代码段用于演示目的,但更好的做法是让每个变量都有不同且更重要的名称。
答案 1 :(得分:-1)
这对我来说很好:
public class Outerclass {
public static void main(String args[]) {
Outerclass outer = new Outerclass();
outer.outerMethod();
}
// method of the outer class
void outerMethod() {
int num = 23;
// method-local inner class
class MethodInnerClass {
public void print() {
System.out.println("This is method inner class "+num);
}
}
// Accessing the inner class
MethodInnerClass inner = new MethodInnerClass();
inner.print();
}
}
答案 2 :(得分:-2)
要打印外部类变量,请使用
MyClass.this.x