foreach - 如何从 Java 8 的 ForEach 方法返回值

标签 foreach return

我有下面的方法,我将可变参数作为输入传递。我试图避免 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/

相关文章:

json - Svelte 带有来自 API : {#each} only iterates over array-like objects 的 JSON

java - 如何返回 java 中最后添加的项目的最后一个主键?

java - 当循环的类型为 "javafx.scene.control.Tab"时,如何跳过增强型 for 循环中的第一个索引?

php - 获取数组的最后一个元素以从中删除逗号

r - 使用 R 将对数 yield 转换为时间序列预测的实际价格

c - 是否有必要在这个函数的 while 循环之后包含一个 return 语句?

.NET - Return 是否会阻止对象处理

javascript - 在再次递归调用函数之前结束该函数

javascript - 停止 if 语句 javascript AngularJS

java - 将字符串数组与变量 Java 进行比较