Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何在反射中获取enum的make对象_Java_Reflection_Enums - Fatal编程技术网

java中如何在反射中获取enum的make对象

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

我需要从带有java反射的枚举中获取名称

我知道我可以在课堂上这样做:(但我找不到有关枚举的内容)

我只想从“getType()”方法中获取“性别”或“语言”

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