静态内部类可定义自己的静态变量和方法,能访问外部类的静态成员但不能访问非静态成员,其实例和静态成员通过“外部类名.内部类名”访问。

静态内部类可以定义自己的静态变量和方法
静态内部类本身是被 static 修饰的嵌套类,它不依赖外部类实例,因此具备独立性——就像一个顶级类那样,可以自由声明自己的静态成员。只要写在类体内部、方法之外,就能合法使用 static 修饰变量或方法。
语法上和顶级类完全一致
它的静态变量和静态方法声明方式与普通类无异,支持任意访问修饰符(public、private、protected 或包级默认),也能用 final 修饰:
- public static final String VERSION = "1.0";
- private static int counter = 0;
- protected static void init() { ... }
不能访问外部类的非静态成员
虽然它能定义自己的静态成员,但访问外部类时受限:只能读写外部类的 静态字段、调用外部类的 静态方法。如果试图引用外部类的实例变量或实例方法,编译器会报错。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
例如:
class Outer {<br>
private static String config = "dev";<br>
private String instanceName = "default";<br>
<br>
static class Inner {<br>
public static void print() {<br>
System.out.println(config); // ✅ 可访问 Outer 的静态字段<br>
// System.out.println(instanceName); // ❌ 编译失败<br>
}<br>
}<br>
}
实例化和调用方式
静态内部类及其静态成员都通过“外部类名.内部类名”来访问:
立即学习“Java免费学习笔记(深入)”;
- 创建实例:Outer.Inner obj = new Outer.Inner();
- 访问静态变量:Outer.Inner.VERSION
- 调用静态方法:Outer.Inner.init()
不需要先创建 Outer 实例,也不涉及任何隐式外部类引用。

















