当前位置: 首页 > 面试题库 >

如何重新实现枚举的valueof

柳志专
2023-03-14
问题内容

我需要重新实现一些枚举的enum.valueof方法,以使它们不再抛出异常,而如果枚举中不存在值,则它们仅返回null。

我正在尝试基本

@Override
    public static <T extends Enum<T>> T valueOf(Class<T> enumType,
            String name){

但是它不起作用,说我需要重写或实现一个超级类型。

我猜想我可以开设一个超级班,但是我不确定如何将它们放在一起。有任何想法吗?


问题答案:

你不能 您必须定义另一个不同的方法。valueOf方法由编译器自动生成。

public static MyEnum permissiveValueOf(String name) {
    for (MyEnum e : values()) {
        if (e.name().equals(name)) {
            return e;
        }
    }
    return null;
}


 类似资料:
  • 我试图在Enum上做一点反向工程。 接口内的枚举实现-Java

  • 问题内容: 在Java中,您可以创建一个枚举,如下所示: public enum Letter { A, B, C, D, E, F, G; } 这个问题涉及“ values()”方法。具体来说,如何实施?通常,我可以在Eclipse中使用F3或CTRL + Click跳到Java类的源代码(甚至对于String,Character,Integer甚至Enum之类的类)。可以查看其他枚举方法的源(

  • 问题内容: 我有一个像这样的通用接口: 此接口具有有限的实例,因此最好将它们实现为枚举值。问题是那些实例具有不同类型的值,因此我尝试了以下方法,但无法编译: 有什么想法吗? 问题答案: 你不能 Java不允许在枚举常量上使用泛型类型。但是,它们允许用于枚举类型: 在这种情况下,你可以做的是为每个泛型类型都拥有一个枚举类型,或者通过将其设为一个类来“伪造”一个枚举: 不幸的是,它们都有缺点。

  • 问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S

  • 我是第一次玩Scala,所以请耐心等待。还使用 tapir 来声明 API,我在为枚举提供架构时遇到问题。 我定义了一堆枚举,它们是我的域模型的一部分,并扩展了Scala的。例如,这是其中之一: 并且还有许多使用它们的案例类。例如, 使用我们之前定义的枚举,例如: 我想让这个枚举实现一个添加隐式但又不修改原始状态枚举的特征(我不想将枚举 - 以及所有其他枚举 - 耦合到这个特征)。 特征如下所示:

  • 例如,我如何做类似的事情: 结果示例: