열거 형 상수 이름을 편집 할 수 있도록 노력 중입니다.자바 - 열거 형 이름 바꾸기
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를 삭제하고 새 MasterClass를 만드는 것입니다.
이 문제없이 상수 이름을 어떻게 바꿉니 까?
IDE를 사용하여 이름을 바꾸면 모든 용도가 업데이트됩니다. – Bohemian
직렬화 된 데이터를 읽는 것처럼 보입니다. Class/Enum이 직렬화 된 데이터와 더 이상 일치하지 않으면 작동하지 않습니다. – Tom
이클립스의 굴절 툴을 사용하고 있습니다. 동일한 오류 –