直接上代码啦。。。
public class Outer{
double i=0;
public class inner{
double i=0;
public void printLine(){
double i=0;
System.out.println(i); //对 printLine()中 i 的调用
System.out.println(inner.this.i); //对 Inner 中 i 的调用
System.out.println(Outer.this.i); //对 Outer 中 i 的调用
}
}
//问题来了。。。。
public void getInner(){
double i=0;
class innerer{
double i=0;
private void print(){
System.out.println(i); //对 innerer 类中的 i 调用
// TODO 怎么样调用 getInner()中 i 的值
System.out.println();
System.out.println(Outer.this.i); //对 Outer 中 i 的调用
}
}
}
}
发现缩进没有用 T__T 帮忙解答下 //TODO 里面的问题
1
PandaFack 2015-10-22 18:23:44 +08:00
改个名字, 然后定义成 final 的
|
3
unique 2015-10-22 18:31:56 +08:00
```java
public class Outer { double i = 0; public class inner { double i = 0; public void printLine() { double i = 0; System.out.println(i); // 对 printLine()中 i 的调用 System.out.println(inner.this.i); // 对 Inner 中 i 的调用 System.out.println(Outer.this.i); // 对 Outer 中 i 的调用 } } // 问题来了。。。。 public void getInner() { // 此处 i 是 getInner 方法的内部变量,在外部无法调用 double i = 0; // 这里是 innerer 是局部内部类,在外部无法调用, Outer 内可以调用 class innerer { double i = 0; private void print() { System.out.println(i); // 对 innerer 类中的 i 调用 // TODO 怎么样调用 getInner()中 i 的值 System.out.println(); System.out.println(Outer.this.i); // 对 Outer 中 i 的调用 } } // 这样调用 innerer 的 print 方法 new innerer().print(); } } ``` |
5
SoloCompany 2015-10-22 20:16:50 +08:00
不能
|
6
hush OP @SoloCompany 感觉也是,后面的 i 把前面的隐藏了
|
7
Cloudee 2015-10-23 09:11:21 +08:00 via iPhone
这里貌似只能改个局部变量的名字了...
|