2017-04-24 6 views
-3

javaでEnumを理解するのが難しいです。JavaでEnumを有効に使用する

はのは、私が列挙

public enum EnumTest { 

    TEST1("Test1"), 
    TEST2("Test2"), 
    TEST3("Test3"), 
    TEST4("Test4"); 

    private final String NAME; 

    EnumTest (String n) { 
     NAME=n; 
    } 

    public String getName() { 
     return NAME; 
    } 
} 

、もう1つは正しい宣言を持つクライアント

public class Client { 

    public static void main (String [] args){ 

     for (EnumTest vet:EnumTest.values()){  
      System.out.println(vet); 
     } 

     String vett1=EnumTest.TEST1.getName();    
     EnumTest vett2=EnumTest.TEST2; 

     System.out.println(vett1); 
     System.out.println(vett2); 
    } 
} 

があるとしましょうか?

vett1はかなり...私には「醜い」と思われますが、最高の出力形式を持っています。 vett2はきれいだと思われますが、なぜ私は満足していないのか分かりません。

宣言の良い習慣はありますか?

+0

をName変数を返すために)(新しいtoStringメソッドを書きますか?なぜあなたはvett2に満足していませんか? – SilverNak

+0

列挙型とその使い方を読んでみてください。あなたが求めているのは、enumが文字列としてどのように表現されているのかです。その場合、両方のオプションは大丈夫です。必要なものに依存します。 – Thomas

+0

vett1は名前、vett2はenumインスタンスそのものです。 –

答えて

1

あなたは

public String toString() { 
    return NAME; 
} 

public String getName() { 
    return NAME; 
} 

を変更した場合)あなたはvett1の出力を取得しますが、明示的な呼び出しのgetName(せずにそれを使用することができます。

これは、javaがtoString()を呼び出して列挙型メンバーを文字列に変換して出力できるからです。 しかし、あなた自身でtoString()メソッドを定義しなければ、enumsスーパーカーネルでtoStringを呼び出すでしょう。

+0

ありがとうございます、今はっきりしています –

1

これは達成しようとしていることによって異なります。コード例では、enumからプライベート変数NAMEを返すgetNameというメソッドを実装しました。これはvett1の値です。 vett2を印刷するときに出力される値は、enum値でtoStirng()を呼び出すと同じ値になります。この例では、2つの値の大文字と小文字は異なりますが、列挙型でメソッドを実装すると、単純に名前を返す以外にも多くのことができます。任意のデータ型を返すことができます。だからそれは本当にあなたがしたいことに依存します。

2

は正確にあなたが達成したいかどうEnumTestクラスに

public String toString() { 
    return NAME; 
} 
関連する問題