3

いくつかのレガシーコードに少し問題があります。チケットは、プロセスの有効性をテストするスクリプトを書くように私に求めています。ただし、スクリプトの実行時にこの例外が発生し続けます。

 java.lang.IllegalArgumentException: No enum const class edu.cmu.s3.common.enums.RegistrationStatus.;

ちなみに、使用されているデータベースは古いIngresレガシーシステムであるため、null値は空の文字列として表されています。非常に美しいので、追加する必要があります。

とにかく、空の文字列が検出されると、列挙型の作成に失敗するように見えます。ただし、列挙型を確認したところ、次のメンバーが含まれています。

BLANK("", "Blank")

これにより、空の文字列は確かに有効な引数であると思われますが、そうではないように見えます。

列挙型は引数として空の文字列を使用できますか、それとも最初に想定したよりも多くのレガシーコードを更新する必要がありますか?

助けてくれてありがとう

4

2 に答える 2

9

空の文字列は列挙型コンストラクターの有効な引数ですが、有効な列挙型名ではありません。

すべての列挙値名は、有効なJava識別子である必要があります。

于 2012-04-16T18:47:32.847 に答える
1

データベースからEnum.valueOf(String)を解析するために使用している場合、問題は名前自体からのキー、つまり。StringsEnumsvalueOfEnumBLANK

これはあなたのために働くでしょう:Enum.valueOf( "BLANK" )

だがしかし:Enum.valueOf( "" )

Enumsコンストラクターにパスされた他のフィールドに基づいて解析する場合はEnum、そのコードを自分で作成する必要があります。

于 2012-04-16T18:48:52.543 に答える