gpt4 book ai didi

java - 如果一个方法返回一个匿名类,那么它返回的是子类还是内部类?

转载 作者:行者123 更新时间:2023-12-02 00:46:00 25 4
gpt4 key购买 nike

也许这没有什么区别,但我还是想知道。我想知道返回匿名类意味着什么,如下所示:

public class Module extends BaseModule {

private BaseInitializable initializeModule() {
return new BaseInitializable() {
public void initialize(InitializationContext context) {
helperA.initialize();
helperB.initialize();
s_logger.log(LogLevel.INFO,"something");
}

public void shutdown(InitializationContext context) {
}
};
}
}

Post 1

Post 2

根据帖子 1,代码似乎返回了一个匿名内部类。但这是否违背了内部类的原则,因为它们只与它们所在的父类相关(根据帖子2)?帖子 1 中接受的答案说内部类也是父类的子类。如果这是真的,那么返回这个内部/子类就有意义了。但根据Post 2,内部类不是子类。那么我该怎么办呢?该方法返回内部类或子类的实例吗?

最佳答案

I want to know what it means to return an anonymous class such as in the following:

    return new BaseInitializable() {
...
};

这取决于BaseInitialized是什么。如果它是一个,那么匿名类就是BaseInitialized的子类。如果它是一个接口(interface),那么匿名类是Object的子类,并且它实现BaseInitialized

另外,请记住,根据定义,匿名类是内部类。 JLS如是说15.9.5. Anonymous Class Declarations :

An anonymous class is always an inner class.

这意味着,回答你的问题:

Does this method return an instance of an inner class or a subclass?

两者都有。匿名类是一个内部类和一个子类(BaseInitializedObject)。

或者,如果您不认为以 Object 作为其父类(super class)的类是子类:
这取决于。匿名类是一个内部类。如果它实现了,而不是接口(interface),那么它也是一个子类。

关于java - 如果一个方法返回一个匿名类,那么它返回的是子类还是内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57897362/

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