나는자바 열거 형 : 리팩토링 switch 문 '상수 표현식 필요'컴파일 오류?
private static Object getValue(String stringValue, Parameter parameter) throws InvalidPatternException
{
Object result=null;
switch (parameter.getDataType())
{
case GroupConstants.STRING_VALUE: // String value
result=stringValue;
break;
case GroupConstants.INTEGER_VALUE: // Long value
case GroupConstants.LONG_VALUE:
case GroupConstants.BOOLEAN_VALUE:
case GroupConstants.DATE_VALUE:
..
}
나는 INT 상수 값을 리팩토링 할이 열거
에 의해 표현되는 스위치 문장의 집합이 코드에서 내 응용 프로그램public class GroupConstants {
..
public static final int INTEGER_VALUE = 1;
public static final int LONG_VALUE = 2;
public static final int STRING_VALUE = 3;
..
}
에 대한 상수를 선언하는 클래스를 가지고
public enum DataType {
UNKNOWN_VALUE(0,"unknown"),
INTEGER_VALUE(1,"integer"),
LONG_VALUE(2,"long"),
STRING_VALUE(3,"string"),
BOOLEAN_VALUE(4,"boolean"),
..
}
그래서 내 코드는 다음과
01처럼 보일 수 있습니다초과 근무로 인해 내 스위치 명령문을 변경할 수 있습니다. 열거를 가리 키도록 정적 최종 int 참조를 변경하면 모든 switch 문이 중단됩니다.
[javac] /home/assure/projects/tp/main/src/a/b/c/DDDDDManagerBean.java:1108: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:203: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:268: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:316: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:436: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
모든 스위치를 아직 변경하지 않으려 고하고 싶지 않으므로 깨끗한 해결 방법이 있습니까?
가 아닌 GroupConstants 기존의 방법은? DataType.INTEGER_VALUE : 컴파일러 오류에 있어야합니까? –
지금까지 보여준 내용에 따라 문제가 무엇인지 알 수 없습니다. 이 작업은 예를 들어 내가하고있는 것으로 가정합니다. 'ParameterComponent'. 그러나 다시, 오류 메시지는 새로운'DataType' 클래스와 아무런 관련이 없습니다. 그래서 아마도 컴파일 오류의 원인이되는 코드를 오인하고 있습니다. 컴파일하지 않는 코드 (예 : ParameterComponent 클래스)를 붙여넣고 오류가 발생한 위치를 강조 표시 할 수 있습니까? –