Geo*_*rge 5 java eclipse anonymous-class
public class Main {
private final int value = 3;
public static Runnable buildRunner() {
return new Runnable() {
@Override
public void run() {
System.out.println(Main.this.value);
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Eclipse Kepler和JRE 7.
在buildRunner方法中 - 为什么我能看到thisMain的?静态方法中Main的'this'是什么?为什么编译?
如果value是最终的,我只能这样做.我不能调用Main和stuff的实例方法,但是值不是十分贬值的static!此外,如果我想在使用buildRunner方法,外面run的方法new Runnable,编译器将停止从我做那.
JLS \xc2\xa7 15.8.4表示“该形式的表达式的值TypeName.this是第n个词法封闭实例this”。由于您的示例中没有Main 的封闭实例,因此代码无效。
在 javac 中,代码会产生错误“this无法从静态上下文引用非静态变量”。它在 Eclipse 中编译的事实似乎是 Eclipse(它有自己的编译器)中的一个不起眼的错误。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |