私のEnumの元のJavaコードは次のとおりです。
public enum CarModel {
NOMODEL("NOMODEL");
X("X"),
XS("XS"),
XSI("XS-I"); //NOTE the special - character. Can't be declared XS-I
XSI2("XS-I.2"); //NOTE the special . character. Can't be declared XS-I.2
private final String carModel;
CarModel(String carModel) {
this.carModel = carModel;
}
public String getCarModel() { return carModel; }
public static CarModel fromString(String text) {
if (text != null) {
for (CarModel c : CarModel.values()) {
if (text.equals(c.carModel)) {
return c;
}
}
}
return NOMODEL; //default
}
}
ここで、protobuf を使用すると、.proto ファイルに入ります。
enum CarModel {
NOMODEL = 0;
X = 1;
XS = 2;
XSI = 3;
XSI2 = 4;
}
以前の質問から、protoc によって生成された列挙型を呼び出して自分のクラスを削除できることはわかっていますが (したがって、値の定義の重複を回避できます)、どこかで (ラッパー クラスで? ラッパー列挙型クラスで?) 代替fromString()
メソッドを定義する必要があります。列挙ごとに正しい文字列を返します。それ、どうやったら出来るの?
編集:以下を実装するにはどうすればよいですか:
String carModel = CarModel.XSI.toString();
これは「XS-I」を返します
と:
CarModel carModel = CarModel.fromString("XS-I.2");