从String或Serializable值转换为Class对象;

时间:2013-09-12 13:28:18

标签: java

我有一个枚举类Property,在我的程序的某些部分,我想要替换String中的SerializableProperty值。我怎么能这样做?

public enum Property {
    Autofocus,
    Bluetooth,
    Brand,...}

如何使用Property值或SerializableString分配值:

Property property;
this.property = (Serializable) value;

this.property = "value";

而不是

this.property = Property.Autofocus;
this.property = Property.Brand; // ...

3 个答案:

答案 0 :(得分:2)

使用java.lang.Enum.valueOf(Class<T> enumType, String name)

Property p = Enum.valueOf(Property.class, "Autofocus");
System.out.println(p);

答案 1 :(得分:2)

每个enum都有一个隐式方法valueOf(String),它返回具有指定名称的枚举实例:

 Property p = Property.valueOf("Autofocus");

请注意,此方法会针对未知值抛出IllegalArgumentException

答案 2 :(得分:1)

Property.valueOf("Bluetooth");
如果你的意思是

会将字符串中的值转换为枚举值

静态方法valueOf()values()是在编译时创建的,不会出现在源代码中。但它们确实出现在Javadoc中;例如,Dialog.ModalityType显示两种方法。