列挙型定数を編集できるようにしようとしています。Java - 列挙型定数の名前を変更する
public class MasterClass implements Serializable {
/**
*
*/
private static final long serialVersionUID = -7117733089486585811L;
private Sex sex;
public Sex getSex(){
return sex;
}
}
:
は、私はこれらのクラスを持っています。
public class Sex implements Serializable {
/**
*
*/
private static final long serialVersionUID = -4688254148082455942L;
private EnumModel model;
public String print(){
return model.name();
}
public static String print(String n){
return EnumModel.byName(n).name();
}
private static enum EnumModel {
MALE_1(1, 2, 3),
MALE_2(1, 2, 3),
FEMALE_1(1, 2, 3),
FEMALE_2(1, 2, 3)
;
private int x, y, z;
EnumModel(int...is){
x = is[0];
y = is[1];
z = is[2];
}
public static EnumModel byName(String n){
for (EnumModel a : EnumModel.values()){
if (n.toLowerCase().replaceAll(" ", "_").equalsIgnoreCase(a.name().toLowerCase()))
return a;
}
return null;
}
}
}
私はMALE_ONEにMALE_1の名前を変更した場合その後、私は列挙型定数の名前を編集するとき後、例えば、その後、私は、このエラーが発生します。
Caused by: java.lang.IllegalArgumentException: No enum constant com.masterclass.sex.Sex.EnumModel.MALE_1
at java.lang.Enum.valueOf(Enum.java:238)
at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1750)
MALE_1ので、明らかに、もはや私がこれを解決できる唯一の方法は、保存されたMasterClassを削除して新しいマスタークラスを作成することです。
この問題が発生していない定数の名前を変更するにはどうすればよいですか?
IDEを使用して名前を変更すると、すべての用途も更新されます。 – Bohemian
シリアル化されたデータを読み取ろうとしているようです。 Class/Enumがシリアル化されたデータともう一致しない場合、これは機能しません。 – Tom
私はEclipseの屈折ツールを使用して、同じエラー –