java 中内部类问题

2015-10-22 18:13:54 +08:00
 hush

直接上代码啦。。。
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 里面的问题

2777 次点击
所在节点    Java
7 条回复
PandaFack
2015-10-22 18:23:44 +08:00
改个名字, 然后定义成 final 的
hush
2015-10-22 18:31:43 +08:00
@PandaFack 只用到 i 可以吗?有没有别的方法?
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();
}
}
```
hush
2015-10-22 18:40:38 +08:00
@unique 意思是在 print()方法里面获取到 i 的值呢,,,
SoloCompany
2015-10-22 20:16:50 +08:00
不能
hush
2015-10-22 21:12:28 +08:00
@SoloCompany 感觉也是,后面的 i 把前面的隐藏了
Cloudee
2015-10-23 09:11:21 +08:00
这里貌似只能改个局部变量的名字了...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/230256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX