2012-05-06 22 views
6

私は定数を定義する2つの方法があります。最初のクラスはクラス内のstatic final DataType変数の束を保持し、もう1つはEnumを使用して保持します。一例として、静的呼び出しを介し定数値の定義方法 - ベストプラクティス

public class TipTipProperties { 
    public static final String MAX_WIDTH_AUTO = "auto"; 
    public static final String POSITION_RIGHT = "right";  
} 

そして、これらの変数の意志の使用:ここ

は拳型でTipTipProperties.MAX_WIDTH_AUTO

第2のタイプは、次のとおり

public enum TipTipProperties { 

    MAX_WIDTH_AUTO(MaxWidth.AUTO), 
    POSITION_RIGHT(Position.RIGHT); 

    private MaxWidth maxWidth; 
    private Position position; 

    private TipTipProperties(MaxWidth maxWidth) { 
     this.maxWidth = maxWidth; 
    } 

    private TipTipProperties(Position position) {  
     this.position = position; 
    } 

    public MaxWidth getMaxWidth() { 
     return maxWidth; 
    } 

    public Position getPosition() { 
     return position; 
    } 

    public enum MaxWidth { 
     AUTO("auto"); 

     private String width; 

     private MaxWidth(String width) { 
      this.width = width; 
     } 

     public String getWidth() { 
      return width; 
     } 
    } 

    public enum Position { 
     RIGHT("right"),   

     private String position; 

     private Position(String position) { 
      this.position = position; 
     } 

     public String getPosition() { 
      return position; 
     }  
    } 
} 

使用例:TipTipProperties.POSITION_RIGHT.getPosition().getPosition()

私の質問は:1がより良いOOPと理由です

  • 代替案があるか、より良いアプローチが存在しますか?

ありがとうございます。

+2

'Enum ++; finalString - ; ' – assylias

+2

最初のコンパイル例はありますか? 'public class TipTipProperties'ではないでしょうか? –

+0

@HunterMcMillen、それは私のせいです。コピー/貼り付けの間違い。 –

答えて

2

Joshua BlochがEffective Javaで言ったようにEnumがこれを行うのが最良です。すべての定数を印刷したい場合は、Enumを使用してより多くの制御を行うことができます。 クラス定数では、型の安全性を持つことはできません。 read this for further help

+0

返信ありがとうございます。列挙型を正しく使用していますか? –

1

プロジェクト内のプロパティファイルを使用することも、これを行う良い方法です。 Javaでこれを行う方法は、postで説明されています。

基本的には、プロジェクトのルートディレクトリにtiptip.propertiesという名前を作成し、必要なすべてのキーと値のペアを保存することができます。

+0

返信ありがとうございます。プロパティファイルのエフェクトの使用はパフォーマンスではありませんか? –

+1

あなたは、プロパティファイルから値を読み込んで定数に割り当てる最初のバージョンや、おそらくenumバージョンのようなクラスを作ることができます(私は列挙型バージョンは考えていないので、それは実行できません) 。はい、最終変数は実行時に割り当てることができ、コンパイル時に値を与える必要はありません。そうすれば、再コンパイルせずにそれらを変更する柔軟性と、各アクセスでより高価なルックアップの代わりに直接アクセスする速度があります。 – TofuBeer

関連する問題