当前位置: 首页 > 面试题库 >

Java“ lambda转换的目标类型必须是接口”

冯星阑
2023-03-14
问题内容

我正在尝试在Java中使用lambda和流,但我对此很陌生。当我尝试创建lambda表达式时,我在IntelliJ中收到了此错误“
lambda转换的目标类型必须是接口”

List<Callable<SomeClass>> callList = prgll.stream()
                                          .map(p->(()->{return p.funct();} )) <--- Here I get error
                                          .collect(Collectors.toList());

难道我做错了什么?


问题答案:

我怀疑这只是Java的类型推断不够聪明。尝试

 .map(p -> (Callable<SomeClass>) () -> p.funct())


 类似资料:
  • 我正在尝试实现一个示例库,客户端可以使用它来执行他们的代码,为了实现它,我使用了Java的函数式编程特性。但获取编译错误此表达式的目标类型必须是函数接口 请说说我缺了什么。

  • 我有一个界面,看起来像 公共接口密钥检索器{ } 我希望实现是这样的 CustomerTypeKeyRetriever(实现类) 我该如何实现这一点。目前它抛出一个编译错误——“类型CustomerTypeKeyRetriever必须实现继承的抽象方法KeyRetriever.getKey(Object)”

  • 问题内容: 假设我有此接口A: 因此,我希望某些抽象类实现doThis()方法,而不是doThat()一个方法: 当您最终决定在常规类中实现de doThat方法时,就会出现错误: 此类导致我前面提到的错误: “类型B不能是C的超级接口;超级接口必须是接口” 现在任何人都可以,如果这种类层次结构有效,还是应该以其他方式进行处理? 问题答案: 您必须使用 了解和关键字之间的区别很重要。因此,我建议您

  • 问题内容: 我对接口和类实现接口有疑问。 这是我的代码: 我想创建一个这样的实例: 可以,但是如何从接口实例中调用?这是安全的吗? 感谢帮助。 问题答案: 是的,就可以了(如果你改变的声明来实现),并作为参考真的很安全,只要 不 参考的实例。 但是,这通常是个坏主意。使用接口的全部目的是能够与 任何 实现一起使用- 它是将抽象与实现分开。如果你然后将需要一个具体的实现,你还不如让的类型正好与开始。

  • 使用mapstruct时,我们有以下(示例)场景: 我们的目标类“动物园”包含一些“动物”的参考。动物可以是“狮子”或“大象”。现在,我们想根据某个源类(“ZooMaker”)的属性设置狮子的长度或大象的躯干长度。 我们要做的是使用mapstruct动态创建动物园中的动物。但是,如果我们使用FactoryClass 对于这个Mapper类: 我们得到一个错误,如:错误:(10,9)java:未知属

  • 本文向大家介绍Javascript必知必会(四)js类型转换,包括了Javascript必知必会(四)js类型转换的使用技巧和注意事项,需要的朋友参考一下 string和number boolean javascript 类型会根据赋值的进行转成相应的类型。    这一种比较明显,一眼就可以计算出其值。但是请看下面这种转换   number 类型如果和string 类型"+", 将会直接numbe