所以我环顾了谷歌和所以,我找不到一个例子或解释:static
final
方法的目的是什么enum
?
我的理解:
static
可以像函数/过程语言一样访问方法声明。final
意味着你不能覆盖它。无法更改参考。正如 assylias 在评论中指出的那样,static
也不能被覆盖。enum
s 不能被子类化,在这里解释。
那么,如果 s 中的static
final
方法enum
永远不会被覆盖,那么它的意义何在,因为不会有子类?
通过将静态方法设为 final,您可以防止它被子类隐藏(只有实例方法可以被覆盖)。
由于 enum 不能被子类化,因此将静态方法设为 final 是多余的,但并非禁止。
注意:从技术上讲,每个具有类主体的枚举常量都隐式定义了一个扩展枚举的匿名类。但是由于内部类可能没有声明静态方法,静态最终方法不能隐藏在这样一个常量的类体中。
很容易看出为什么static
方法有意义,所以我想问题是关于final
修饰符的。
final
在这里没有任何用处,除了可能使代码更容易阅读,但不是很多。
它类似于interface
方法通常写成的方式public void foo();
,即使接口成员始终是公共的。
在 Java 中,枚举类型用于表示一组固定的常量,并将其设为 static final 仅有助于其初始化一次,单个副本在所有实例之间共享,使用类名访问变量,而 final 更像是只读的
当您声明枚举的实例时,您可以覆盖枚举的方法,本质上枚举实例被实现为(或被认为)为子类。 static
在任何情况下都不能覆盖方法,但 OP 和其他final
对 an 多余的答案的含义enum
是错误的。