java中如何在反射中获取enum的make对象
我需要从带有java反射的枚举中获取名称 我知道我可以在课堂上这样做:(但我找不到有关枚举的内容) 我只想从“getType()”方法中获取“性别”或“语言”java中如何在反射中获取enum的make对象,java,reflection,enums,Java,Reflection,Enums,我需要从带有java反射的枚举中获取名称 我知道我可以在课堂上这样做:(但我找不到有关枚举的内容) 我只想从“getType()”方法中获取“性别”或“语言” EnumWrapper ew=new EnumWrapper(); 字符串nameEnum=ew.getType();//性别 我不确定这是否是您想要的,但它遵循您上面所述的通话方式: EnumWrapper<Gender> ew = new EnumWrapper<>(); String nameEnum = e
EnumWrapper ew=new EnumWrapper();
字符串nameEnum=ew.getType();//性别
我不确定这是否是您想要的,但它遵循您上面所述的通话方式:
EnumWrapper<Gender> ew = new EnumWrapper<>();
String nameEnum = ew.getType();
枚举始终只有一个实例,因此您甚至不能创建一个。只需按名称获取值即可。看看这里:亲爱的托马斯。我使用了很多枚举,也许我在EnumWrapper中设置了每个枚举。但是我需要明白,泛型类型只能提供类型信息,所以它不会是单独的值。但由于枚举是具有特殊属性的类,
Class
就足够了。您甚至不必创建类的实例来获取类的名称,只需调用entity.getName()
(虽然entity
有误导性,但我会使用entityClass
或entityType
),代码不会返回您创建的任何对象,因此“make object”似乎不必要。您可能需要详细说明如何使用该代码,因为您实际上想要实现什么还不清楚。顺便说一句,如果您直接创建EnumWrapper
(我假设您使用的是具体的子类,例如TypeWrapper扩展EnumWrapper
),那么您发布的代码甚至不会编译,也不会工作。因为您只添加了Enum,所以这一点并不清楚。你是如何使用这些代码的?你能举个例子吗?我假设您有类似于GenderRapper扩展EnumWrapper
的东西-对吗?然后您需要调用getType()
并获取“Gender”
?谢谢,但我需要无需make object即可。谢谢,请在您的问题中添加更多细节,并举例说明您希望该类如何工作,因为您说不需要新对象,但您的代码声明了一个类,并建议将它的getType调用称为result=new EnumWrapper().getType()
。
public enum Gender {
WOMAN, MAN, OTHER
}
public enum Language {
Norwegian, ENGLISH, PERSIAN
}
EnumWrapper<Gender> ew = new EnumWrapper<>();
String nameEnum = ew.getType(); // Gender
EnumWrapper<Gender> ew = new EnumWrapper<>();
String nameEnum = ew.getType();
public class Wrapper<T> {
private String type;
public Wrapper(T...args) {
type = args.getClass().getComponentType().getTypeName();
}
String getType() {
return type;
}
public static void main(String[] args) {
System.out.println(new Wrapper<String>().getType());
System.out.println(new Wrapper<Gender>().getType());
System.out.println(new Wrapper<Language>().getType());
}
}
... prints
java.lang.String
Gender
Language