枚举中的静态最终方法
所以我环顾了一下谷歌和SO,我找不到一个例子或解释:方法在什么目的?static
final
enum
我的理解:
- 方法声明可以像函数/过程语言一样访问。
static
-
final
意味着您无法覆盖它。无法更改引用。正如assylias在评论中指出的那样,也不能被覆盖。static
-
enum
s 不能被子类化,在这里解释。
那么,如果 s 中的方法永远不会被覆盖,因为它不会有子类,那么它有什么意义呢?static
final
enum
所以我环顾了一下谷歌和SO,我找不到一个例子或解释:方法在什么目的?static
final
enum
我的理解:
static
final
意味着您无法覆盖它。无法更改引用。正如assylias在评论中指出的那样,也不能被覆盖。static
enum
s 不能被子类化,在这里解释。那么,如果 s 中的方法永远不会被覆盖,因为它不会有子类,那么它有什么意义呢?static
final
enum
通过使静态方法成为 final,可以防止它被子类隐藏(只有实例方法可以重写)。
由于枚举不能被子类化,因此使静态方法成为最终方法是多余的,但不被禁止。
注意:从技术上讲,每个具有类体的枚举常量都隐式定义了一个扩展枚举的匿名类。但是,由于内部类可能不声明静态方法,因此静态最终方法不能隐藏在此类常量的类体中。
很容易理解为什么方法有意义,所以我想问题是关于修饰符的。static
final
final
在这里没有任何作用,除了可能使代码更易于阅读,但不是很多。
它类似于方法通常写成的方式,即使接口成员总是公共的。interface
public void foo();