Java静态内部类是定义在外部类中且不依赖其实例的类,可通过“外部类名.内部类名”直接访问,仅能访问外部类静态成员,可定义自身静态成员,编译后生成独立字节码文件。
Java静态内部类(Static Nested Class)是定义在另一个类内部、但不依赖于外部类实例的类。它本质上是一个“寄居在外部类命名空间里的普通类”,和外部类之间只有编译时的归属关系,没有运行时的引用绑定。
它被static修饰,因此:
静态内部类常用于逻辑内聚但又无需持有外部对象引用的场合,比如工具类、配置类、Builder模式中的静态构建器。
示例:
public class NetworkClient {
private static final String DEFAULT_HOST = "localhost";
private static final int DEFAULT_PORT = 8080;
// 静态内部类:封装连接配置
public static class Config {
private final String host;
private final int port;
private Config(String host, int port) {
this.host = host;
this.port = port;
}
public static Config defaultConfig() {
return new Config(DEFAULT_HOST, DEFA
ULT_PORT);
}
public static Config of(String host, int port) {
return new Config(host, port);
}
// 可以直接访问外部类的静态字段
public void printDefault() {
System.out.println("Default: " + DEFAULT_HOST + ":" + DEFAULT_PORT);
}
}
}
调用方式简洁明了:
NetworkClient.Config config = NetworkClient.Config.defaultConfig(); config.printDefault(); // 输出 Default: localhost:8080
对比一下非静态内部类(即成员内部类):
使用静态内部类时需注意:
基本上就这些。