我最终要做的是以如下方式调用所有具有某些注解的方法:重写的方法将只调用一次。如果对象的类是 B ,它继承自 A 继承自 Object ,我需要中定义的方法 Object 首先调用注解,然后调用 A ,然后是中的方法 B .有没有办法把这些方法按这种方式分类?
B
A
Object
hc2pp10m1#
你可以创造一个 Comparator 那就分类了 Method 根据声明它们的类的对象:
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 对象,这样您的第一个需求就可以“开箱即用”地满足了。
Class#getMethods
1条答案
按热度按时间hc2pp10m1#
你可以创造一个
Comparator
那就分类了Method
根据声明它们的类的对象:然后用它来排序
Method
你拥有的东西。例如。:请注意
Class#getMethods
只返回一个Method
对象,这样您的第一个需求就可以“开箱即用”地满足了。