如何直接从 Java 中的其他 class 访问内部 class 方法?

How can I access inner class methods directly from other class in Java?

我实现了两个这样的接口:

public OuterClass implements Interface1 {

    public InnerClass implements Interface2 {

    }
} 

如何直接从 Java 中的其他 class 访问内部 class 方法?在 Java 中是否允许?

当你在 InnerClass 中定义一个方法时,你需要有一个 InnerClass 的实例来调用它的(非静态)方法。所以我们向您的示例添加一个简单的方法...

public class OuterClass implements Interface1 {
    
    public class InnerClass implements Interface2 {
        
        public void method() {
            System.out.println("hello");
        }
    }
}

... 创建 InnerClass 的实例并调用如下方法:

public static void main(String[] args) {
    OuterClass outer = new OuterClass();
    OuterClass.InnerClass inner = outer.new InnerClass();
    inner.method();
}
// output: hello

由于内部 class 不是静态的,您需要一个 OuterClass 的实例来创建 InnerClass 的实例,您可以在该实例上调用您的方法。

如果将内部class设为静态,也可以在InnerClass中定义静态方法:

public class OuterClass implements Interface1 {

    public static class InnerClass implements Interface2 {

        public void method() {
            System.out.println("hello");
        }

        public static void staticMethod() {
            System.out.println("static");
        }
    }
}

在这种情况下,您不需要 OuterClass 的实例来构造 InnerClass 的实例,因为它是静态可用的并且未绑定到实例。此外,您可以在没有 InnerClass:

实例的情况下调用内部 class 的静态方法
// call static method without any instance
OuterClass.InnerClass.staticMethod();

// create instance of inner class without instance of outer class
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.method(); // call method of inner class

// output: static
           hello