fkc*_*aud 0 java static-methods inner-classes
我理解一个内部类是非静态的,而外部类的静态方法不能引用它.
我有这个代码,这不起作用,我理解为什么这不起作用.
class OuterClass {
class InnerClass{}
public static void outherMethod() {
InnerClass i = new InnerClass();
}
}
Run Code Online (Sandbox Code Playgroud)
但是后来我有了其他代码,它可以工作,但我不明白为什么它与第一个不同.它为什么有效?
class OuterClass {
class InnerClass{}
public static void outherMethod() {
InnerClass i = new OuterClass.new InnerClass();
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:它没有重复,因为它不是同一个问题.我不是在问静态嵌套类,我问的是静态方法和内部类
内部类总是需要封闭类的实例才能实例化.
静态方法OuterClass没有实例OuterClass,因此如果InnerClass不提供封闭实例(of OuterClass),则无法创建实例.
InnerClass i = new InnerClass();
Run Code Online (Sandbox Code Playgroud)
只能在一个实例方法中工作OuterClass.
InnerClass i = new OuterClass().new InnerClass();
Run Code Online (Sandbox Code Playgroud)
从静态方法开始工作,因为您正在创建一个实例OuterClass并将其用作实例的封闭实例InnerClass.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |