猿问

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

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

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;
    }
}

如上,如何在注释处获取对应的值?求大神解答!!!

我的思路如下:

  1. 获取类实现的所有的接口;
  2. 遍历接口列表,查找定义了该方法的接口;
  3. 然后通过确定了的接口直接访问errno

这样的问题是如何判断接口是否定义了当前方法?

有更好的实现方法请指出,本人小白,求帮助!!!

慕娘9325324
浏览 971回答 3
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; } 虽然不知道你为什么要这么麻烦。。。直接 接口名.变量名 不好吗

蝴蝶不菲

可以先尝试一下你的方法,使用 String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); 在方法内部获得当前方法的名称。

芜湖不芜

谢谢大神,主要是怕后续接口名啊,还有方法的划分啊之类的存在变更,这样就不用去在实现里修改了
随时随地看视频慕课网APP

相关分类

Java
我要回答