java 如何调用内部类的方法
调用静态内部类的方法
静态内部类(static nested class)与外部类实例无关,可直接通过类名访问。
示例代码:
class OuterClass {
static class StaticNestedClass {
void printMessage() {
System.out.println("Static nested class method");
}
}
}
// 调用方式
OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
nested.printMessage();
调用非静态内部类的方法
非静态内部类(inner class)依赖外部类实例,需先创建外部类对象才能访问。
示例代码:

class OuterClass {
class InnerClass {
void printMessage() {
System.out.println("Inner class method");
}
}
}
// 调用方式
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.printMessage();
通过外部类方法间接调用
若外部类提供公共方法返回内部类实例,可直接通过该方法调用。
示例代码:
class OuterClass {
private class InnerClass {
void printMessage() {
System.out.println("Private inner class method");
}
}
public InnerClass getInnerInstance() {
return new InnerClass();
}
}
// 调用方式
OuterClass outer = new OuterClass();
outer.getInnerInstance().printMessage();
匿名内部类的调用
匿名内部类通常用于接口或抽象类的即时实现,直接通过实例调用方法。

示例代码:
interface Greeting {
void greet();
}
// 调用方式
Greeting greeting = new Greeting() {
@Override
public void greet() {
System.out.println("Anonymous inner class method");
}
};
greeting.greet();
局部内部类的调用
局部内部类定义在方法或作用域内,仅能在定义它的块中实例化和调用。
示例代码:
class OuterClass {
void outerMethod() {
class LocalInnerClass {
void printMessage() {
System.out.println("Local inner class method");
}
}
LocalInnerClass local = new LocalInnerClass();
local.printMessage();
}
}
// 调用方式
OuterClass outer = new OuterClass();
outer.outerMethod();






