按修饰符排序包含方法的数组

时间:2015-12-09 10:19:31

标签: java reflection java-8

免责声明:这只是我目前正在做的家庭作业的一部分

假设我有一个方法数组,其中包含我声明的所有方法

Method methodList[] = classGetter.getDeclaredMethods();

其中classGetter只是获取我想要获取方法的类。有没有办法通过与方法关联的修饰符类型对此数组进行排序?当我使用

打印修改器时,我看到了
for(Method m: methodList){
    System.out.println(m.getModifiers());
}

它返回整数值。我尝试使用Arrays.sort方法排序,但我得到了错误异常。任何指针?

1 个答案:

答案 0 :(得分:7)

由于Method不是Comparable,您必须指定Comparator确定订单,例如:

Arrays.sort(methodList, Comparator.comparingInt(Method::getModifiers));

您可以应用掩码来删除与您所需顺序无关的那些位,例如:

Arrays.sort(methodList, Comparator.comparingInt(
    m -> m.getModifiers()&(Modifier.PUBLIC|Modifier.PRIVATE|Modifier.PROTECTED)));