如何在接口实现类的方法中,获取在该方法所属的接口中定义的常量;
public interface RequireValidator {
Integer errno = 456;
Boolean required();
}
public interface TypeValidator {
Integer errno = 123;
Boolean isInteger();
}
public class Validator implements RequireValidator, TypeValidator {
@Override
public Boolean require() {
// 此处如何获取456
return null;
}
@Override
public String isInteger() {
// 此处如何获取123;
return null;
}
}
如上,如何在注释处获取对应的值?求大神解答!!!
我的思路如下:
获取类实现的所有的接口;
遍历接口列表,查找定义了该方法的接口;
然后通过确定了的接口直接访问errno;
这样的问题是如何判断接口是否定义了当前方法?
有更好的实现方法请指出,本人小白,求帮助!!!
3 回答
手掌心
TA贡献1942条经验 获得超3个赞
举个例子。。。
public boolean required() {
Class clazz = this.getClass();
String currentMethod = Thread.currentThread().getStackTrace()[1].getMethodName();
Class[] paramTypes = new Class[0];
String fieldName = "errno";
for (Class c : clazz.getInterfaces()) {
try {
c.getMethod(currentMethod, paramTypes);
System.out.println(c.getField(fieldName).get(c));
} catch (NoSuchMethodException | NoSuchFieldException | IllegalAccessException e) {
}
}
return false;
}
虽然不知道你为什么要这么麻烦。。。直接 接口名.变量名 不好吗
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
可以先尝试一下你的方法,使用
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
在方法内部获得当前方法的名称。
添加回答
举报
0/150
提交
取消