2012-06-27 21 views

回答

2

枚舉和最終變量無關。在枚舉之前,人們不得不求助於常量,但它們不是等價的。

0

如果你的意思是public static final int作爲命名常量使用的變量,那麼是的,枚舉是爲了代替它們。

然而,最終變量在少數地區仍然有用 - 值得注意的是,使用閉包需要它們,例如,

final int foo = 3; // must be marked final 
t = new Thread(new Runnable() { 
    public static void run() { 
     System.out.println(foo + 1); 
    } 
}); 
t.start(); 

此外,PSF變量作爲配置常數仍然有用。

0

那麼這兩種方式都有不同的應用。枚舉更適合於狀態機或值不相關的地方。在我的一個程序中,我有一組最終變量作爲值和狀態指示器。最終變量仍然具有重要的應用,因爲它們允許在整個程序中簡單地修改字面值。

/堅果殼

1

絕對不是。 Java中的最終變量不僅僅是常量。

  • 可以將Final應用於方法參數,以提供針對重新分配的編譯時保證。
  • Final可以應用於局部變量以提供編譯時保證以防止重新分配。這也需要實例化引用局部變量(也稱爲閉包)的匿名內部類。
  • Final可以應用於實例變量以保證這些字段的參考不變性。如果字段類型是不可變的或採取了適當的防禦措施,則可以使用它來確保對象的不變性,從而使其不受線程影響。
  • Final可以應用於防止子類覆蓋它們的方法。
  • Final可以應用於類以防止類的擴展。

正如您所見,final關鍵字仍有許多用途。

1

我在這個問題中假設你問的是整數常量而不是其他類型?如果不是,請記住枚舉只能是枚舉(int),不能是特定類型。

否則......再次,它不會使它們過時。如果只有一個(small-ish)有限數量的可能性永遠不會改變,Enums就很有用。如果這些可以是無數的事物(或大量事物),或者不是全部完全定義,但有些可以是事物,那麼它們就不那麼有用。

這實際上取決於用法。