次のような列挙型を定義するライブラリを使用する必要があります。
public static enum LibVal {
VAL_1,
VAL_2,
VAL_3;
}
この列挙型をメソッド引数として取得します。
public void libCallback(LibVal val){
//.... some implementation
}
メソッド内switch
でLibVal
列挙型を使用することを Java が許可しないのはなぜですか? libCallback
ただし、ライブラリがその列挙型を非静的として宣言した場合、それは機能します。このSO-answer が述べているように、これは紛らわしいですが、実際には違いはありません...
編集:
bobkilla が述べたように: スイッチ内で LibVal.VAL_1 を試しましたが、これは許可する必要があります。動作しないコードサンプルを提供します!
class TestClassForEnum {
public static enum TestEnum{ ONE, TWO; }
}
class WhichUsesEnumInsideMethod{
//completely unrelated to TestClassForEnum.TestEnum!!!
public static final int ONE = 0x1282
void doSomethingWithEnum(TestEnum e){
//here I cannot switch:
//FORBIDDEN BY JAVA
switch (e) {
case TestEnum.ONE:
//...
}
//Cannot USE EITHER, because ONE is a static final int inside this scope?!:
switch (e) {
case ONE:
//...
}
}