java—有没有从方法[]中删除对象的方法

e0bqpujr  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(311)

我对java有点陌生,似乎找不到解决问题的好办法。我加载一个类,并有一组规则,我想比较该类的每个方法。

for(Method methods : methods){
     if(checkMethod(methods)){
         //Method is approved
      }
      else{
         //Method is not approved  
      }
}

我在这里的问题是,我想要么从已经存在的方法数组中删除该方法,要么将已批准的方法添加到新的数组中并分别保存它们。方法[]似乎无法删除其数组中的对象?当创建第二个数组,然后使用以下方法时:

if(checkMethod(methods)){
   approvedMethods[i] = methods;
}

感觉我做错了什么,第二个数组将不包含任何批准的方法。是否可以从原始数组中删除一个对象,或者是创建第二个对象的正确方法,如果是这样,如何将它们正确地添加到新数组中?似乎找不到认可的方法。put()/add()。
checkmethod()方法没有任何问题,用多个案例对其进行了测试,并给出了示例输出。

4urapxun

4urapxun1#

就像这样:

Method[] collect = Arrays.stream(array)
                         .filter(AccessibleObject::isAccessible)
                         .toArray(Method[]::new);

通过阵列 methods ,过滤所需的方法,并将它们返回到新数组中。
在java中,不能使用 remove 类a方法。对于这种功能,请使用 ArrayList 相反。
如果只想使用数组,则必须执行以下操作:
首先,找出可接受方法的数量,以便事先知道需要为数组分配多少空间:

int count = 0;
for(Method method : methods){
     if(checkMethod(methods)){
        count++;
      }
}

然后为该数组分配空间:

Method[] approvedMethods = new Method[count];

现在添加适合您的约束的方法:

int i = 0;
for(Method method : methods){
     if(checkMethod(methods)){
        approvedMethods[i++] = method
      }
}

这种方法的一个缺点是它会遍历数组两次。

相关问题