如何获得 valueOf 通用枚举?

我正在尝试使用默认方法创建一个接口,该方法返回该枚举的 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 的静态变体的目的是什么?)。


米琪卡哇伊
浏览 192回答 2
2回答

不负相思意

你不能不传递一个Class对象。您需要模仿以下签名Enum.valueOf():static <T extends Enum<T>> T getEnumOrNull(Class<T> enumType, String name) {&nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; return Enum.valueOf(enumType, name);&nbsp; &nbsp; } catch (IllegalArgumentException e) {&nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java