我有這個課程,比方說,Foo
。它是extends JFrame
,是一個單身人士。也就是說,它有兩個靜態字段:1)Foo
的實例和2)Color
。Swing中靜態成員的排序是否敏感?
這裏是一個Foo
代碼片段:
public class Foo extends JFrame{
private static final Color FOO_RED = new Color(155, 64, 69);
private static final Foo INSTANCE = new Foo();
private Foo(){
//do stuff
}
public static Foo getInstance(){
return INSTANCE;
}
}
我也有另一個類,比方說,Launcher
。這是負責啓動應用程序的主類。這是一個簡單的課程,它唯一的工作就是將構建Foo
的任務委託給EDT
。
這裏是一個Launcher
代碼片段:
public class Launcher{
public static void main(String[] args){
SwingUtilities.invokeLater((new Runnable(){
@Override
public void run()
{
Foo.getInstance();
}
}));
}
}
現在,這一切都工作得很好。 但是,當我切換Foo
的字段排序(請參閱下面的)時,使用FOO_RED
的組件不再繪製此顏色。
public class Foo extends JFrame{
private static final Foo INSTANCE = new Foo(); //declared before Color
private static final Color FOO_RED = new Color(155, 64, 69);
private Foo(){
//do stuff
}
public static Foo getInstance(){
return INSTANCE;
}
}
所以,這引出了一個問題,確實靜態字段,當談到Swing
物質的排序?
+1僅在第一次需要時初始化實例。 – Deelazee 2011-05-27 14:40:24
+1,解釋了爲什麼我看到「古怪」的行爲,並提供了一個合理的解決方案。謝謝你,低音。 :) – mre 2011-05-27 14:46:04
+1,但請刪除最後一個修飾符。 – Howard 2011-05-27 16:10:08