java - 将 lambda 作为具有泛型类型的参数传递 - java 8

标签 java generics lambda java-8

如果我有方法 foo(Predicate bar),接下来我可以使用它:

foo(new Predicate<MyObject>() {
        public boolean apply(MyObject obj) { 
           return true;
        }
    }
)

但是我怎样才能使用 lambda 风格的表达式达到相同的结果:

foo((MyObject obj) -> true); //obvious compile exception

如何将带有 lambda 的泛型类型传递给方法? 或者,简单地说,我如何使用没有局部变量的 lambda 风格创建类 Predicate(或其他)的匿名对象。

最佳答案

不要使用原始类型 foo(Predicate<? extends MyObject> bar)

或在 lambda 中转换 foo(obj -> ((MyObject) obj).myMethod())

关于java - 将 lambda 作为具有泛型类型的参数传递 - java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727456/

相关文章:

java - 在excel文件中导出Jtable

java - 在 32 位应用程序中访问 64 位注册表

c# - Autofac:类型 '...' 不可分配给服务 '...' 。

c# - 为什么我不能使用 Lambda 表达式取消订阅事件?

java - 使用 HttpURLConnection 读取 REST 请求输出

java - 即使没有 GC 根,类加载器也不会被垃圾回收

java - 如何将 Session 对象转换为 Map?

java - 错误的类型推断

c# - 在表达式树中,如何使用需要与结果进行比较的表达式,例如。指数?

c++ - 如何将 "cast"一个双参数函数转换为一个参数函数?