为了账号安全,请及时绑定邮箱和手机立即绑定

如何在接口实现类的方法中,获取在该方法所属的接口中定义的常量;

如何在接口实现类的方法中,获取在该方法所属的接口中定义的常量;

慕娘9325324 2019-01-18 06:49:46
如何在接口实现类的方法中,获取在该方法所属的接口中定义的常量; 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;
}

虽然不知道你为什么要这么麻烦。。。直接 接口名.变量名 不好吗

查看完整回答
反对 回复 2019-02-12
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

可以先尝试一下你的方法,使用

String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();

在方法内部获得当前方法的名称。

查看完整回答
反对 回复 2019-02-12
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

谢谢大神,主要是怕后续接口名啊,还有方法的划分啊之类的存在变更,这样就不用去在实现里修改了

查看完整回答
反对 回复 2019-02-12
  • 3 回答
  • 0 关注
  • 970 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信