为什么ButtonType不是javafx中的枚举

时间:2015-11-18 14:05:20

标签: button javafx enums

我试图在switch语句中使用ButtonType变量只是为了发现它不是枚举。

我有点意识到这是为了让开发人员能够更改ButtonType的文本,而ButtonType具有ButtonData属性,这是一个枚举。

我想问一下,如果ButtonType为enum,这种改变文字的能力是不是可能?我认为开发人员只关心将在UI中显示的文本,因此我认为枚举上的方法show(String whatthedeveloperwants)就足够了,不会吗?

1 个答案:

答案 0 :(得分:2)

在我看来,这里的问题是从#34;它可以完成吗?"到#34;它应该完成吗?"。从语法点的角度来看,您提出的建议是有效的。你可以有一个按钮类型的枚举,并有一个方法可以更改负责UI文本的内部枚举字段。但是,从概念角度来看,它违背了枚举的概念。从Oracle开始,枚举类型表示一组预定义常量。枚举元素作为常量的想法在许多其他语言中是一致的。它向开发人员传达了一个信息,因此,人们会期望一个恒定的价值,而不是改变。如果某个类型的实例需要随时间更改,那么通常使用类机制。 ButtonType可以更改,而ButtonData具有预定义值,并且开发人员已捕获这些值,因此他们分别使用类和枚举。

我怀疑他们已经经历了同样的思想链,但我相信他们在为ButtonType设计API时使用了相同的原则。