2011-12-08 45 views
1

實現系統來建立程序範圍的常量的最佳方式是什麼?我有一個跨越多個文件的程序,我想要一個存儲常量的類,以便它們可用於所有其他文件。 我想是這樣的:如何實現一個java類,以便它保存其他文件中的其他類的常量

Constants.java

public final class Constants{ 
    private Constants(){} 
    public static final String EX = "mas"; 
} 

test.java

import Constants.*; 
public class test{ 
    public static void main(String[]args){ 
      System.out.println(EX); 
    } 
} 

,但我得到以下錯誤

test.java:1: error: cannot find symbol 
import static Constants.*; 
      ^
    symbol: class Constants 

Constants.javatest.java在日同樣的目錄。

+0

你的'Constants'類是否在默認包中? – Mac

+0

不,我該如何導入常量類呢? –

+0

這裏真的有兩個問題......爲什麼你實現的解決方案不起作用,以及做你想做的事情的最佳方式是什麼。 –

回答

1

你不能沒有包導入類(也稱爲缺省包)

0

如果這兩個類都在同一個包,你並不需要進口。

  1. 刪除常量類
  2. import語句在您的測試類,使用以下行:Constants.EX獲得EX的價值。
0

您需要在導入時引用Constants以引用完整的軟件包名稱。

例如,如果Constantstest是在包「com.mystuff」,你需要導入如下:

import static com.mystuff.Constants.*; 

或者,因爲你的類是在你不相同的包根本不需要輸入 - 只需要EXConstants類的資格,例如Constants.EX而不是僅僅EX

0

任何公共靜態final變量都可以在任何地方訪問,而無需創建對象的實例。你的情況,你可以訪問EX變量:

Constants.EX; 

一般有良好的面向對象設計,你在一個類中包括常量應具體到該對象類型。例如,如果你有一個Window對象,它的常量可能是「aspectRatio」或「height」,但將Window類中的「nameOfUser」作爲常量是不合適的。因此,有時候製作一個「通用」的常量類將會固有地讓你忽略在遵循面向對象的理想時真正屬於不同類的變量。

相關問題