2011-02-10 17 views
1

は、私は、次のコードについて質問があります。 2つの別々の変数を削除しても、WelcomeMessageにSettings.WelcomeMessageでアクセスできますか?私はSettings.widget [0]でアクセスする必要はありませんか?そして、(たとえば静的ハッシュテーブルを使って)WelcomeMessage変数に別の変数を追加することは可能ですか?重複静的フィールド(文字列対アレイ)

編集:私はこのコードが正しく表示されていないことを知っていますが、コンパイラがWelcomeMessage(separata変数として)がウィジェット配列の変数と同じであると思った理由がわかりました。

+0

コンパイラからの警告メッセージ/エラーメッセージは何ですか?これらの3つの内容は関連していないことに注意してください。名前と値が異なります。 "WelcomeMessage"は静的フィールドへの参照ではなく、単に "WelcomeMessage"という文字列です。 –

+1

本当ですか?私はどんな重複変数も見ません。 – dogbane

+0

あなたのコードでは、 'Settings.WelcomeMessage'は「helloworld」ですが、' Settings.widgets [0] 'は「WelcomeMessage」です。彼らは同じではありません。ウィジェット配列に二重引用符を付けるつもりはなかったでしょうか? – MAK

答えて

2

私はあなたのケースでのjava-列挙型を検討する:あなたは、ウィジェットの配列を通過し、としてそれらにアクセスする必要があるだろう、という方法でそれらにアクセスすることはできません

public enum Settings { 
    WelcomeMessage ("helloworld"), 
    ByeMessage ("yo"); 

    public final String value; 

    Settings(String value) { 
     this.value = value; 
    } 
} 

Settings.WelcomeMessage.valueで値にアクセスできます。また、Settings.values()でenumのリストを取得します。

0

は私があなたの代わりにこれを使用するためのものだと思う:

public Class Settings 
{ 
    public static final String WelcomeMessage= "helloworld"; 
    public static final String ByeMessage= "yo"; 

    public static String[] widgets = {WelcomeMessage,ByeMessage}; 
} 

しかし、これは良いです:

public Class Settings 
{ 
    public static String[] widgets = {"WelcomeMessage","ByeMessage"}; 
} 

そして、そう、あなたがSettings.widgets[0]経由WelcomeMessageにアクセスすることができます。

編集:もちろん - あなたは名前でアクセスすることはできず、配列にのみインデックスすることはできません。

編集2:あなたは、フィールドが保護されたか、プライベートにと「ゲッター」メソッドを提供する場合、それはそれらが実装されている方法をすべてのユーザークラスには関係ありません:

public Class Settings 
{ 
    private static final String welcomeMessage= "helloworld"; 
    private static final String byeMessage= "yo"; 

    public static String getWelcomeMessage() 
    { 
     return welcomeMessage; 
    } 

    public static String getByeMessage() 
    { 
     return byeMessage; 
    } 
} 
+0

Settings.widgets.WelcomeMessageから値にアクセスすることはできません。これは、Settings.widgets [0]です。編集:修正されました。 – Mnementh

+0

@Mnementh:修正済み。思考力が低下する! – trojanfoe

1

あなたがフィールドをマークしました

Settings.WelcomeMessage 

またはあなたがちょうど、自分のクラスのstaticインポートを使用する場合:

WelcomeMessage 
はい、あなたが経由でそれらにアクセスできるようになりますことを意味のpublic staticとして

は、あなたが実際にウィジェット配列でこれらの定数を使用していない、あなただけの「WelcomeMessage」と「ByeMessage」

public static String[] widgets = {"WelcomeMessage","ByeMessage"}; 

いいえ、あなたが削除した場合、そこにWelcomeMessageとByeMessage定数の二つの新しい文字列を作成しました

Settings.widgets[0] 
関連する問題