我对 Java 有点陌生,似乎找不到解决我的问题的好方法。 我加载了一个类并有一组规则,我想将该类的每个方法与之进行比较。
for(Method methods : methods){
if(checkMethod(methods)){
//Method is approved
}
else{
//Method is not approved
}
}
我的问题是我想从现有的方法数组中删除该方法,或者将批准的方法添加到新数组并单独保存它们。 似乎 Method[] 无法删除其数组中的对象?当创建第二个数组然后使用类似的东西时:
if(checkMethod(methods)){
approvedMethods[i] = methods;
}
感觉我做错了什么,第二个数组不包含任何已批准的方法。 是否可以从原始数组中删除一个对象,或者是创建第二个对象的正确方法,如果是这种情况,我该如何正确地将它们添加到新数组中?似乎找不到 approvedMethods.put()/add()。
checkMethod()方法没有问题,通过多例测试,输出结果符合预期。
最佳答案
只是喜欢:
Method[] collect = Arrays.stream(array)
.filter(AccessibleObject::isAccessible)
.toArray(Method[]::new);
遍历数组methods
,过滤所需的方法,并将它们返回到一个新数组中。
在 Java 中,您不能使用类似 remove
的方法从数组中删除。对于这种功能,请改用 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
}
}
这种方法的缺点之一是它会遍历数组两次。
关于java - 有没有办法从 Method[] 中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65169450/