这是因为前两个静态成员分配给原始类型或String类型的编译时常量。
根据Java语言规范的第8.1.3节:
8.1.3。内部类和封闭实例
内部类不得声明静态成员,除非它们是常量变量(第4.12.4节),否则会发生编译时错误。
从4.12.4开始:
基本类型或String类型的变量是最终变量,并使用编译时常量表达式(第15.28节)进行了初始化,该变量称为常量变量。
编辑:
起初我发现这很令人惊讶。仔细考虑一下,此限制的一个优点是,无需担心何时初始化内部类的静态成员。您可以在包含类中移动内部类,而不必担心其静态成员的值将被更改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)