我正在嘗試使用默認方法創建一個接口,該方法返回該枚舉的 valueOf(string) 或 null 它沒有任何,因此我可以輕松實現它,而無需全部粘貼此代碼的非通用變體我需要這樣的東西的課程。所以我嘗試這樣做,但它不能編譯:public interface EnumWNull<T extends Enum<T>> { default T getEnumOrNull(String value){ try { return Enum.valueOf(T /*Error: expression expected*/, value); }catch (Exception e){ return null; } }}我不明白為什么。而且我實際上知道我可以讀取所有值并手動搜索它,但是為了學習和優雅,我想知道比這更好的方法(我覺得應該有更好的方法,如果沒有的話) t,valueOf 的靜態變體的目的是什么?)。
2 回答

不負相思意
TA貢獻1777條經驗 獲得超10個贊
你不能不傳遞一個Class對象。您需要模仿以下簽名Enum.valueOf():
static <T extends Enum<T>> T getEnumOrNull(Class<T> enumType, String name) {
try {
return Enum.valueOf(enumType, name);
} catch (IllegalArgumentException e) {
return null;
}
}
添加回答
舉報
0/150
提交
取消