是否有理由在java匿名类中实现这些规则

时间:2018-04-16 05:05:10

标签: java

据我所知,常规类和匿名类之间的区别是:

  • 匿名类不能实现多个接口,而普通类可以。
  • 匿名类不能同时扩展类和实现接口 而普通班可以。
  • 匿名类在常规课程中没有名称。
  • 匿名类无法定义构造函数,因为匿名类没有名称而普通类可以。

这些规则是否有理由在匿名类中实现?

  • 匿名类的静态字段必须是常量。
  • 接口不能是匿名类的成员。
  • 静态块/初始值设定项不能在匿名类中使用。

1 个答案:

答案 0 :(得分:1)

因为JLS 15.9.5. Anonymous Class Declarations说:

  

匿名类始终是内部类§8.1.3);它绝不是静态的(§8.1.1§8.5.1)。

JLS 8.1.3. Inner Classes and Enclosing Instances说:

  

如果内部类声明了静态初始值设定项(§8.7),那么这是一个编译时错误。

     

如果内部类声明显式或隐式static的成员,那么这是一个编译时错误,除非该成员是常量变量(§4.12.4)。

请注意,接口是隐式static

另见问题: