我有一個定義這樣一個枚舉庫的工作:爲什麼Java不允許開啓靜態枚舉?
public static enum LibVal {
VAL_1,
VAL_2,
VAL_3;
}
我得到這個枚舉作爲方法的參數:
public void libCallback(LibVal val){
//.... some implementation
}
爲什麼Java的禁止與LibVal
使用switch
在libCallback
方法裏枚舉枚舉?但是,如果lib已經聲明它的枚舉是非靜態的,它就可以工作。這是因爲這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:
//...
}
}
展示你是如何想'之開關。 – jlordo 2013-05-13 11:42:19
編譯錯誤是什麼? – NINCOMPOOP 2013-05-13 11:42:39
它不會禁止它。沒有證據。不是一個真正的問題。 – EJP 2013-05-13 11:43:48