所以我浏览了谷歌和SO,我找不到一个例子或解释:static
中final
enum
方法的目的是什么?
我的理解:
static
可以像函数/过程语言一样访问。final
表示您无法覆盖它。无法更改参考。正如评论static
中指出的assylias也不能被覆盖。enum
s无法进行子类化,解释here。那么static
中的final
enum
方法的重点是什么,如果它永远不会被重写,因为它不会有子类?
答案 0 :(得分:18)
通过创建一个静态方法final,子类可以覆盖you prevent it from being hidden(只有实例方法可以覆盖)。
由于enum不能被子类化,因此制作静态方法final是多余的,但不是禁止的。
注意:从技术上讲,每个枚举常量都有一个类体implicitly defines an anonymous class that extends the enum。但是从inner classes may not declare static methods开始,静态final方法无法隐藏在这样的常量类体中。
答案 1 :(得分:4)
很容易理解为什么static
方法有意义,所以我想问题是关于final
修饰符。
final
在这里没有用处,除了可能使代码更容易阅读,但不是很多。
它类似于interface
方法通常被编写为public void foo();
的方式,即使接口成员总是公开的。
答案 2 :(得分:2)
在Java中,Enum类型用于表示固定的常量集,并使其成为静态final,仅帮助其初始化一次,单个副本在所有实例之间共享,使用类名访问变量,最后更像是读取-only
答案 3 :(得分:0)
当您声明枚举的实例时,您可以覆盖枚举的方法,实际上枚举实例被实现为(或想到)子类。在任何情况下都无法覆盖static
个方法,但OP final
对于enum
多余的答案中的含义是错误的。