- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
也许这没有什么区别,但我还是想知道。我想知道返回匿名类意味着什么,如下所示:
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) {
}
};
}
}
根据帖子 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?
两者都有。匿名类是一个内部类和一个子类(BaseInitialized
或 Object
)。
或者,如果您不认为以 Object
作为其父类(super class)的类是子类:
这取决于。匿名类是一个内部类。如果它实现了类,而不是接口(interface),那么它也是一个子类。
关于java - 如果一个方法返回一个匿名类,那么它返回的是子类还是内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57897362/
我是一名优秀的程序员,十分优秀!