使用反射类方法

问题描述:

所以我觉得我的设计弄得很少, 这就是我得到的。使用反射类方法

我的应用程序需要很多枚举,每个枚举包含多个初始化对象和一个“Get Best”方法。

​​

所有枚举的具有相同getBest,所有应有的场次数, 由于枚举不能扩展,思想也许界面或许可以帮忙,但如果枚举实现一个接口,然后每它的情况下只实现不枚举它。

public abstract class Best { 

public abstract Enum<?> getBest(int num); 
} 

class MyNumberClass extends Best { 
    public abstract Enum<?> getBest(int num){return MyNumberEnum.getBest(num)} 
} 

所以我想也许创建一个类和里面把枚举,然后我可以扩展获取最佳方法。

所以为了方便使用,我创建了一个HashMap ,然后加入map.put(“编号”,MyNumberClass.class)

但后来我到了一个点,我得到了Class对象, 我怎样才能使用它的getBest方法?

感谢和抱歉我的愚蠢!

+0

你的意思是你得到了类实例或类型? – nullpointer

+0

@nullpointer 我用 map.put( “编号”,MyNumberClass.class) 所以我得到MyNumberClass.class我认为这是 类类型编辑: HashMap中decleration的HashMap > –

+1

这应该会帮助你去https://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html...try某些东西,如果它不起作用就回来。 – nullpointer

使用DOC: https://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html

我用: 回报(枚举)enumMap.get(enumName).getDeclaredMethod( “getBest”,Script.class).invoke(NULL,API);

以为它是继承自Best class的思想,而且它是静态方法。 它可以使用更容易的东西.getBest() Appetintly它不能。

感谢 @nullpointer