gpt4 book ai didi

Java getMethods() 关于继承层次结构

转载 作者:行者123 更新时间:2023-12-04 08:21:48 25 4
gpt4 key购买 nike

我最终想要做的是以某种方式调用所有具有注释的方法:

  • 覆盖的方法只会被调用一次。
  • 如果对象的类是 B ,它继承自 A继承自 Object , 我想要 Object 中定义的方法首先调用该注释,然后调用 A 中的方法,然后是 B 中的方法.

  • 有没有办法以这种方式对方法进行排序?

    最佳答案

    您可以创建一个 Comparator Method 进行排序根据声明它们的类的对象:

    public static class MethodInheritanceComparator implements Comparator<Method> {

    @Override
    public int compare(Method m1, Method m2) {
    Class<?> class1 = m1.getDeclaringClass();
    Class<?> class2 = m2.getDeclaringClass();

    if (class1.equals(class2)) {
    return 0;
    }
    if (class1.isAssignableFrom(class2)) {
    return -1;
    }
    if (class2.isAssignableFrom(class1)) {
    return 1;
    }
    return 0;
    }
    }
    然后用它对 Method进行排序你拥有的对象。例如。:
    Method[] methods = // All the relevant methods...
    Arrays.sort(methods, new MethodInheritanceComparator());
    请注意 Class#getMethods只返回一个 Method对象在重写方法的情况下,因此您的第一个要求是“开箱即用”的。

    关于Java getMethods() 关于继承层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65461473/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com