9

IMyInterface.MyEnum を呼び出せる Enum 上に、Java の switch ステートメントがあります。

私の各 case ステートメントの形式は、IMyInterface.MyEnum.MyValue です (ただし、インポートした場合は IMyInterface を削除できます)。

ただし、コンパイラ (Java 6) は次のエラーをスローします。

私は明らかにそれを行うことができますが、私の人生では、このエラーの目的がわかりません。明らかに、コンパイラが実際の値を処理できる場合、定数の場合と同様に完全修飾名を処理できるはずです。実際、コンパイラが定数を完全修飾名に変換すると想定していました。

では、Java の専門家の皆さん、この背後にある理論的根拠は何ですか? ありがとうございました!

4

2 に答える 2

3

それは奇妙なものです。これについて知るために、私は自分自身を掘り下げる必要がありました。完全修飾名よりも、スイッチがオンになっているオブジェクトをタイプ チェックする方が安全なようです。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6191812は、修飾された列挙型を指定できるようにするために提起されたバグ レポートでしたが、閉鎖され、同封物で確認できる理由により対処されませんでした。

于 2009-06-08T14:56:43.323 に答える