【发布时间】:2013-02-24 15:24:29
【问题描述】:
我已经阅读了这方面的帖子,所以我知道应该如何避免静态变量,它们不是面向对象的,它们就像全局变量等。
但这是我的问题,希望不要重复: 我有一些私有类变量,许多方法使用和传递会很乏味。我正在谈论的课程是我的主程序, 所以它的唯一实例将是 JVM 创建的实例。
在这种情况下,如果这些变量是静态的,有什么区别吗? (也许如果用户多次打开我的应用程序并且我将变量设为静态,他们会共享变量并相互混合?)
我想使用静态,因为我想从枚举内部访问这些变量。谢谢
这是枚举部分的代码:
enum Buttons {
OPEN_BUTTON("Open file...",false),
CHANGE_FONT_BUTTON("Change font",false),
DECOR_BUTTON("Decor font",true),
EDITOR_BUTTON("Open editor",false),
ALPHABET_BUTTON("Open alphabet browser",false),
CTEST_BUTTON("Start consonant test",false),
TESTTYPE_BUTTON("Select test type...",false),
TEST_BUTTON("Start word test",false),
QUIT_BUTTON("Quit", false);
private ButtonBase button;
Buttons(String title, boolean toggle) {
if (toggle) button = ToggleButtonBuilder.create().prefWidth(200).prefHeight(35).text(title).build();
else button = ButtonBuilder.create().prefWidth(200).prefHeight(35).text(title).build();}
void onClick(EventHandler<MouseEvent> eh) {button.setOnMouseClicked(eh);}
ButtonBase getBase() {return button;}
boolean toggled() { return ((ToggleButton)button).isSelected(); }
void setToggle(boolean on) {((ToggleButton) button).setSelected(on); }
void enable() {button.setDisable(false);}
void disable() {button.setDisable(true);}
void setText(String text) { button.setText(text);}
void clicked() {
// 这是我想要事件处理程序的地方...
【问题讨论】:
-
您的枚举需要如何访问非常量程序变量?这似乎是一个不寻常的设计?我的直觉告诉我,你不应该这样做。 “主程序”如果您指的是具有主方法的类,那么该方法应该尽可能短,并且仅用于创建对象并使它们启动并运行,仅此而已。
-
我正在使用 JavaFx,并且我正在将我的 Buttons 制作成一个枚举,我想在枚举中添加 ActionEvent(单击)处理程序,所以它都整齐地放在一个地方。处理程序需要访问类变量。
-
那么答案很简单:这闻起来是糟糕的设计。枚举应该用于常量而不是 GUI 组件。不要这样做。
-
抱歉错误地尝试插入代码
-
插入代码作为对主要问题的编辑,而不是作为评论。