我有下面的方法,我将可变参数作为输入传递。我试图避免 HeapPollution,因此除了使用 Suppresswarnings 进行注释之外,我还想确保验证可变参数中每个参数的类是否相同或该类的后代。但我的问题是,如果我发现类不匹配,我想返回 false;使用 ForEach 方法(仅返回 void 我可以执行返回。有没有办法通过返回 false 直接退出 ForEach 循环。我不想使用增强的 For 循环 [只是因为我正在学习 forEach : -)] 但通过 ForEach 方法和 lambda 表达式实现我想要的。有办法吗?
感谢您提供的任何帮助!
public final <T> boolean exists(T valueToCheck, @SuppressWarnings("unchecked") T... listOfPossibleValues) {
if (valueToCheck == null) return false;
Arrays.asList(listOfPossibleValues).forEach((T value) ->
{ if (!(valueToCheck.getClass().isAssignableFrom(value.getClass()))) return; else System.out.println(value.getClass()); });
for (T value : listOfPossibleValues){
if (value != null ) {
if (value.equals(valueToCheck)) return true;
}
}
return false;
}
最佳答案
我做了以下操作,我认为这解决了我的目的。当然不使用 ForEach,而是使用流和 lambda 表达式。
return Arrays.asList(listOfPossibleValues).stream().filter(value -> !(valueToCheck.getClass().isAssignableFrom(value.getClass()))).collect(Collectors.toList()).size() > 0;
关于foreach - 如何从 Java 8 的 ForEach 方法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783488/