gpt4 book ai didi

Java:创建局部内部类的实例

转载 作者:行者123 更新时间:2023-11-29 07:20:57 26 4
gpt4 key购买 nike

下面是一些演示我的问题的玩具代码。第一个是编译版本,第二个是不编译版本。

示例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.
}

}

}
}

最佳答案

从概念上讲,本地类声明是一个语句。在执行语句之前,该类不存在。当它声明的范围结束时,该类也会消失。通常,本地类可能会引用其他本地范围名称,因此执行顺序很重要。

void f()
{
if(true)
throw new Error();

class InnerClass
{
...
}
}

在这个例子中,InnerClass声明语句永远不会到达,所以这个类永远不会存在。事先引用它是没有意义的。

在使用某物之前对其进行声明总是一个好主意。在 Java 中,类可以具有循环依赖性,因此 Java 必须允许突然引用类 - 但如果可以避免,则不要这样做。

关于Java:创建局部内部类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4579689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com