作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道内部类是非静态的,外部类中的静态方法无法引用它。
我有这段代码,它不起作用,我明白为什么它不起作用。
class OuterClass {
class InnerClass{}
public static void outherMethod() {
InnerClass i = new InnerClass();
}
}
但是我有其他代码,它确实有效,但我不明白为什么它与第一个代码不同。为什么它有效?
class OuterClass {
class InnerClass{}
public static void outherMethod() {
InnerClass i = new OuterClass.new InnerClass();
}
}
提前致谢!
编辑:它不重复,因为它不是同一个问题。我不是在问静态嵌套类,我是在问静态方法和内部类
最佳答案
内部类始终需要封闭类的实例才能实例化。
OuterClass
的静态方法没有 OuterClass
的实例,因此如果不提供 InnerClass
的实例,则无法创建 InnerClass
的实例一个封闭实例(OuterClass
)。
InnerClass i = new InnerClass();
只能在OuterClass
的实例方法中工作。
InnerClass i = new OuterClass().new InnerClass();
在静态方法中工作,因为您正在创建 OuterClass
的实例并将其用作 InnerClass
实例的封闭实例。
关于java - 外部类、内部类以及静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32788408/
我是一名优秀的程序员,十分优秀!