2011-08-11 5 views
1

の値を返すことは可能ですか?たとえば、getFlag()のように値を返す関数を呼び出す必要はありませんか?もしそうなら、どうですか?get関数を呼び出さずに列挙型の値を返します

public enum MessageFlags { 
     BIT0((short)1), 
     BIT1((short)2), 
     BIT2((short)4), 
     BIT3((short)8), 
     BIT4((short)16), 
     BIT5((short)32), 
     BIT6((short)64), 
     BIT7((short)128), 
     BIT8((short)256), 
     BIT9((short)512), 
     BIT10((short)1024), 

     set_freq(BIT0), 
     get_freq(BIT1); 

     short bitFlag = 0; 
     MessageFlags flag; 

     MessageFlags(short flag) { 
      this.bitFlag = flag; 
     } 

     MessageFlags(MessageFlags flag) { 
      this.flag = flag; 
     } 

     public short getFlag() { 
      return this.flag.bitFlag; 
     } 

     public short getValue() { 
      return this.bitFlag; 
     } 
    } 
+0

嫌なことはありませんが、それが直接かメソッド呼び出しのどちらが重要なのはなぜですか? –

+0

@ダニエル:それは私のif文を群集にするので。 –

+0

私は混乱しています。なぜ 'MessageFlags'は' flag'という 'MessageFlags'フィールドを持っていますか? –

答えて

2

することはできimport static MessageFlags.*;と同じ値を返し、BITX.getFlag()を言うだろう。ここで

は完全な例である:

A.java

package foo; 

import static foo.B.*; 

public class A{ 
    public B value = BAR; 
} 

B.java

package foo; 

public enum B{ 
    BAR, BAZ, BOO 
} 
+0

私はこの方法が私が提案したものよりも好きです。 –

+0

"import MessageFlagsを解決できません" - それは私が得るエラーです。 –

+0

@コード、正しいパッケージ名を使用しましたか?あなたは "静的"という言葉を使いましたか? – Jeremy

3

ちょうどMessageFlags.BITX言うと、それはgetFlag()

1

私はこれのジェレミーのアドバイス@続く:

package foo; 

import static foo.B.*; 

と入力し、MessageFlags列挙型にset_freqというメソッドを作成しました。私はこの機能をstaticにして、shortを返しました。たとえば、あなたが何も設定されていないため、set_freqflag

public static short set_freqflag() { 
    return BIT0.getFlag(); 
} 

セマンティクスは少し奇妙ですが、私は現時点では、より良い名前がありません。これは私が前に行っていたより長い道のりではなく、ちょうどset_freqflag()と述べることができます。

0

私は本当に遅くなるかもしれませんが、私はこのトピックを訪問して助けを求めている人に執筆しています。

あなたが列挙型を持っている、とあなたはget関数を呼び出すことなく、デフォルトではその値の特定のパラメータを返すしたい場合は、あなたが選択した機能の上に@Overrideを挿入する必要があり、同様:

public class Plants { 
    public enum Fruits { 
    APPLE ("sweet"), 
    GRAPEFRUIT ("sour"); 

    private String taste; 

    Fruits (String taste) { 
     this.taste = taste; 
    } 

    @Override 
    public String getTaste() { 
     return this.taste; 
    } 
    } 
} 

そして今、あなたはget関数なしで、あなたが好きな方列挙値を呼び出すことができます。

Plants.Fruits.APPLE 

そして、それは「甘い」

PSを返します私はプロのプログラマーではありません。私が偶然に反従来的なものを書いたなら、私を修正してください。

関連する問題