Java 外部类、内部类和静态方法
我知道内部类是非静态的,外部类的静态方法不能引用它 我有这个代码,它不起作用,我理解为什么它不起作用Java 外部类、内部类和静态方法,java,static-methods,inner-classes,Java,Static Methods,Inner Classes,我知道内部类是非静态的,外部类的静态方法不能引用它 我有这个代码,它不起作用,我理解为什么它不起作用 class OuterClass { class InnerClass{} public static void outherMethod() { InnerClass i = new InnerClass(); } } 但我有另一个代码,它确实有效,但我不明白为什么它与第一个不同。它为什么有效 class OuterClass { class
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();
}
}
提前谢谢
编辑:它不是重复的,因为它不是同一个问题。我不是问静态嵌套类,而是问静态方法和内部类这里要注意的关键点是内部类是外部类的一个成员 因此,如果没有它的实例,就无法访问它的成员 直接从 InnerClass的实例只能存在于OuterClass的实例中,并且可以直接访问其封闭实例的方法和字段 要实例化内部类,必须首先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:
内部类总是需要一个封闭类的实例才能被实例化
OuterClass
的静态方法没有OuterClass
的实例,因此如果不提供封闭实例(属于OuterClass
),则无法创建InnerClass
的实例
只能在OuterClass
的实例方法中工作
InnerClass i = new InnerClass();
InnerClass i = new OuterClass().new InnerClass();
在静态方法中工作,因为您正在创建OuterClass
的实例,并将其用作InnerClass
实例的封闭实例
InnerClass i = new InnerClass();
InnerClass i = new OuterClass().new InnerClass();