为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得 valueOf 通用枚举?

如何获得 valueOf 通用枚举?

米琪卡哇伊 2021-06-22 12:14:34
我正在尝试使用默认方法创建一个接口,该方法返回该枚举的 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;

    }

}


查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 191 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信