【发布时间】:2015-06-19 16:07:29
【问题描述】:
下面的代码产生输出middle。谁能详细解释这是怎么发生的?
是因为class A的“内部”版本的声明是在class A的实例在go()方法中创建之后出现的吗?
class A {
void m() {
System.out.println("outer");
}
}
public class MethodLocalVSInner {
public static void main(String[] args) {
new MethodLocalVSInner().go();
}
void go() {
new A().m();
class A {
void m() {
System.out.println("inner");
}
}
}
class A {
void m() {
System.out.println("middle");
}
}
}
【问题讨论】:
-
尝试将 inner 类
A重命名为B,您将得到outer输出。这应该会给你一个提示。 -
@TimBiegeleisen 我很难选择一个特定的答案,因为您的许多答案都是正确且中肯的。
-
您将在 Eclipse IDE
The type A is never used locally中收到警告,表示从未使用方法go中定义的本地类A。 -
我很想知道您正在实施这个要求是什么?或者它只是一个棘手的问题......!!
-
@KisHanSarsecHaGajjar 正在解决书中的一些练习,我遇到了这个问题。
标签: java inner-classes