繁体   English   中英

枚举的valueOf方法

[英]valueOf method of Enum

枚举有一个valueOf方法:

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

所以,当我有枚举时:

public enum Basket {
    APPLES, ORANGES, FLOWERS 
}

编码

Basket b = Basket.valueOf(Basket.class, "APPLES");

带给我的是同一个对象

Basket b2 = Basket.APPLES;

即,以上两行中的b.equals(b2)是true。

我想知道的是-什么是

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

很好。

在反射API中可能会使用它-我现在无法将其放在一起。 除此之外,此方法是否有特定用途? 如果Enum类没有此方法,将会丢失什么?

与valueOf-with-single参数相同-在Enum中隐式定义:

Basket.valueOf("APPLES");

在做与

Basket.valueOf(Basket.class, "APPLES");

什么用途?

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

当您不知道确切的Enum类型时使用。 如果您正在编写通用代码,就是这种情况。 一个示例是将json反序列化为java对象。 您可以通过反射和调用来获取字段的“ enumType”,

Enum.valueOf(enumClass,fieldValue)

如果要查看实际用法,请检查,

java.io.ObjectInputStream#readEnum

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM