3

以下に示す列挙型クラスを持つサードパーティのライブラリを使用しています。

public enum Version { 
VERSION_2_0("v2.0"), 
VERSION_2_1("v2.1"), 
VERSION_2_2("v2.2")

private final String urlElement;

  Version(String urlElement) {
    this.urlElement = urlElement;
  }

  public String getUrlElement() {
    return this.urlElement;
  }

  public boolean isUrlElementRequired() {
    return null != this.urlElement;
  }


}

私はこの列挙型に渡したい小道具ファイルからバージョンを読んで、次のようなそれぞれの列挙型定数を取得しています:

String str="v2.2"; //this i get from a props file    
System.out.println("version enum: "+Version.valueOf(str));

私は例外を下回っています:

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant com.pkg.Version.v2.2

「v2.2」は単一の文字列として扱われていないようです。文字列のドットをエスケープしていくつかの方法を試しましたが、どれも機能していません。私はJDK1.7を使用しています。誰でもこれに遭遇したので、アドバイスしてください。

4

2 に答える 2

0

Enum を更新することはできないため、Enum 名を値で返すプログラムを作成します。

public static String getEnumNamebyValue(String str){
        for(Version v : Version.values()){
            if(v.getVersion().equals(str))
                return v.name();
        }

return null; }
于 2015-07-24T06:49:29.433 に答える