【发布时间】:2011-01-02 18:04:54
【问题描述】:
下面是一些演示我的问题的玩具代码。第一个是编译的版本,第二个是不编译的版本。
在示例1中,为了创建InnerClass的实例,我必须在InnerClass的类定义下创建实例。这是有道理的,因为在类定义之上,InnerClass 是不可见的。但是,为了简洁起见,我想在 foo() 的顶部创建和使用 InnerClass 的实例。有没有办法在实际类定义之前动态定义 InnerClass,这样我的代码可能看起来更像 example 2 但会是合法的 Java?
示例 1
public class OuterClass {
public void foo() {
class InnerClass {
public InnerClass() {
// do nothing.
}
}
InnerClass in = new InnerClass(); // Defined below, and compiles!
}
}
示例 2
public class OuterClass {
public void foo() {
InnerClass in = new InnerClass(); // Defined above, does not compile!
class InnerClass {
public InnerClass() {
// do nothing.
}
}
}
}
【问题讨论】:
-
java 版本 "1.5.0_26" Java(TM) 2 Runtime Environment, Standard Edition
-
在使用之前定义类有什么问题?我看不出你对第二个例子有什么好处,即使它有效。
-
第二个例子没有太大的优势。我正在尝试学习 Java 的来龙去脉,我只是好奇。
标签: java scope inner-classes