2016-07-06 7 views
1

を避けることはexempleです:はここで、私は私のJavaコードを確認し、検査するSonarQubeを使用しています、と私は列挙型クラス型に避け重複リテラルで問題が発生しまし重複リテラルソナーエラー

public enum Products { 

    A ("Product A"), 
    C ("Product A"), 
    D ("Product B"), 
    P ("Product B"); 

    private String name = ""; 

    Products (String name){ 
    this.name = name; 
    } 

    public String toString(){ 
    return name; 
    } 
} 

ソナーは文字列 'Product A'と 'Product B'を定数フィールドとして宣言するように指示していますが、Enum型クラスで変数を宣言することはできません。

答えて

1

あなたは列挙型の定数外宣言することができます:あなたの答えのための

private static final String TYPE_A_NAME = "Type A"; 

public enum Type { 

    TYPEA(TYPE_A_NAME), TYPEB("B"); 

    private String value; 

    Type(String value) { 

    } 
} 
+0

感謝を:) – Sofiane

0

プレフィックスを作成します(プライベート静的最終スティングPREFIX = Product.class.getSimpleName()+ ""

とA( "A")、等...

あなたは、文字列を返す、あなたあなたは

にCA ...

Product.A =製品Aなどをプロパティファイルで、あなたの文字列を国際化するMessageFormatterを使用

とコンストラクタはプライベートですることができますnは

`

public static String getI18NString(String key){ return Internationalizer.getI18String(PREFIX + key); }

パブリッククラスInternationalizer { /**このクラスのロガーのようなゲッターを作ります。 */ プライベート静的最終ログLogGER = LogFactory.getLog(Internationalizer.class);

/** */ 
private static ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource(); 

/** 
* Get the internationalized String form properties files 
* 
* @param key 
* @return 
*/ 
public static String getI18String(final String key) { 
    String message = ""; 
    try { 
     message = resourceBundleMessageSource.getMessage(key, null, Locale.getDefault()); 
    } catch (NoSuchMessageException e) { 
     LOGGER.info("Key not internationalized : " + key); 
     message = key; 
    } 
    return message; 
} 

/** 
* Set the bundles for internationalization Injected by Spring 
* 
* @param bundles 
*/ 
public void setBundles(final List<String> bundles) { 
    String[] bundlesArrays = new String[bundles.size()]; 
    for (int i = 0; i < bundles.size(); i++) { 
     bundlesArrays[i] = bundles.get(i); 
    } 
    resourceBundleMessageSource.setBasenames(bundlesArrays); 
} 

}

`

関連する問題