Java 使用反射的类方法
所以我觉得我的设计有点混乱, 这是我得到的 我的应用程序需要很多枚举,每个枚举包含多个初始化对象和一个“Get Best”方法Java 使用反射的类方法,java,reflection,java-8,Java,Reflection,Java 8,所以我觉得我的设计有点混乱, 这是我得到的 我的应用程序需要很多枚举,每个枚举包含多个初始化对象和一个“Get Best”方法 枚举MyNumberEnum{ 第一(“第一”,1) 第三(“第三”,3) 公共字符串名称; 公共整数; MyNumberEnum getBest(整数){ MyNumberEnum bestNumber=第一个; 对于(MyNumberEnum编号:MyNumberEnum.values()){ 如果(number.num使用文档: 我用过: return(Enum
枚举MyNumberEnum{
第一(“第一”,1)
第三(“第三”,3)
公共字符串名称;
公共整数;
MyNumberEnum getBest(整数){
MyNumberEnum bestNumber=第一个;
对于(MyNumberEnum编号:MyNumberEnum.values()){
如果(number.num使用文档:
我用过:
return(Enum)enumMap.get(enumName).getDeclaredMethod(“getBest”,Script.class).invoke(null,api)
因为它继承自Best类,是静态方法。
它可以使用一些更简单的方法,比如.getBest()
显然不能
谢谢
@nullpointer你的意思是你得到了类实例或类型?@nullpointer我使用了map.put(“Number”,MyNumberClass.class),所以我得到了MyNumberClass.class。我想这是类类型编辑:hashmap Decelleration hashmap这将帮助你做一些事情,如果它不起作用,你会回来。你的整个问题让人困惑。你想要一个类方法吗(aka静态
方法)是否?在第一个代码示例中,方法不是静态的,但是,使用接口的问题是什么?在第二个示例中,有一个基类最佳的和一个子类有什么关系?顺便问一下,抽象的方法不能有主体。那么的相关性是什么ode>HashMap
您在最后谈论的是什么?为什么您要将“Number”
映射到MyNumberClass.class
?您的问题之前的文本没有提到需要从“Number”
映射到任何东西;您谈论的是枚举
s…
enum MyNumberEnum{
First("First", 1)
Third("Third", 3)
public String name;
public int num;
MyNumberEnum getBest(int num){
MyNumberEnum bestNumber = First;
for (MyNumberEnum number: MyNumberEnum.values()) {
if (number.num <= num)
bestNumber = number;
}
return bestNumber ;
}
}
public abstract class Best {
public abstract Enum<?> getBest(int num);
}
class MyNumberClass extends Best {
public abstract Enum<?> getBest(int num){return MyNumberEnum.getBest(num)}
}