私が列挙型で表現されるint型の定数の値をリファクタリングしたいswitch文のセットJava enum:リファクタリングswitch文 'constant expression required'コンパイルエラー?
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:
..
}
があるコードでは私のアプリ
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のようになります。と私は私のスイッチステートメントを変更することができます。列挙型を指すようにstatic最終的な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クラス)を貼り付けて、エラーの発生場所を強調表示できますか? –