2011-12-08 11 views
1

プログラム全体の定数を設定するシステムを実装する最良の方法は何ですか?私はいくつかのファイルにまたがるプログラムを持っており、他のすべてのファイルに利用できるように定数を格納するクラスを持っていたいと思います。 Constants.java他のクラスの他のクラスの定数を保持するように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が目にしている次のエラーを取得する: 私はこのような何かを試してみました同じdir。

+0

'Constants'クラスはデフォルトパッケージにありますか? – Mac

+0

いいえ、どうすればConstantsクラスをインポートできますか? –

+0

ここには本当に2つの質問があります。実装したソリューションが機能しないのはなぜですか、また、実行したいことのタイプを実行する最善の方法は何ですか。 –

答えて

5

デフォルトパッケージからインポートすることはできません。 Java Language Specification

クラスをパッケージに入れてください。あなたは、パッケージなしのクラスをインポートすることはできません

1

(また、デフォルトのパッケージと呼ばれる)

0

この2つのクラスが同じパッケージ内にある場合は、インポートする必要はありません。

  1. テストクラスの定数クラス
  2. ためのimport文を削除し、次の行を使用:EXの値を取得するためにConstants.EXを。
0

完全なパッケージ名を持つインポートでは、Constantsという参照先を前もって入力する必要があります。

import static com.mystuff.Constants.*; 

を代わりにあなたのクラスは、あなたが「ドン同じパッケージにあるので、:Constantstestがパッケージ「com.mystuff」である場合は、次のよう

はたとえば、あなたがインポートする必要がありますインポートはまったく必要です。Constantsクラスを使用してEXを修飾してください。 EXの代わりにConstants.EX

0

パブリックstatic final変数は、オブジェクトのインスタンスを作成せずにどこでもアクセスできます。あなたのケースでは、あなたとEX変数にアクセスすることができます良いオブジェクト指向設計で一般的に

Constants.EX; 

あなたは、クラスに含める定数は、そのオブジェクトタイプに固有でなければなりません。たとえば、Windowオブジェクトを持っている場合、その定数は "aspectRatio"または "height"ですが、Windowクラスに "nameOfUser"を定数として持つのは不適切です。だから時には "普遍的な" Constantsクラスを作ることは、オブジェクト指向の理想に従うときに、どのクラスが本当に異なるクラスに属するのか見失うことになります。

関連する問題