为什么会发生异常'lambda表达式中的ad返回类型:AuthenticatedUser无法转换为User'?如果可选为空,我只想返回此AuthenticatedUser。
User user = new User("d","d","d");
return s -> {
List<User> list = new ArrayList<>(Arrays.asList(TestData.BASIC_USER_ENTITY, TestData.ADMIN_USER_ENTITY));
return new AuthenticatedUser(
list.stream()
.filter(u -> u.getUsername().equals(s))
.findAny()
.orElseGet(() -> new AuthenticatedUser(new User()))); // Bad return type in lambda expression: AuthenticatedUser cannot be converted to User
};
如果我们仔细检查流上的操作,我们可以做出以下观察:
list.stream() // produces a Stream<User>
.filter(u -> u.getUsername().equals(s)) // still a Stream<User>
.findAny() // produces an Optional<User>
.orElseGet(() -> new AuthenticatedUser(new User())
传递给orElseGet(…)的lambda的返回类型 必须与可选的泛型类型的赋值兼容。在我们的例子中,可选的通用类型是用户。因此,我们可以将代码重写为:
list.stream()
.filter(u -> u.getUsername().equals(s))
.findAny()
.orElseGet(User::new)
我需要通过触摸按钮来更改形状类型。我尝试了这种方法,但我得到了一个错误,即形状类型不能转换为布尔值。代码: 错误:
如果会发生重复,我需要确认数据。但不能这样做。 在这种情况下,是否可以将字符串转换为对象,或通过另一个表达式连接该数据? 我有一个问题:
将异常获取为 :lambda表达式中的返回类型错误:
以下代码在IntelliJ和Eclipse中编译得很好,但JDK编译器1.8.0\u 25对此表示不满。首先,代码。 javac 1.8.0\u 25的输出为: 当我更换时?超级E只需使用E,JDK就能成功编译。 当我将替换为,JDK编译成功。 由于它适用于JDK 1.8.0_60,我怀疑它是编译器错误。 有没有详细说明是什么原因造成的以及何时修复的?
我试图通过加速,用java流编写一个查询。当我尝试在select中时,我得到以下错误: lambda表达式中的错误返回类型:BigDecimal不能转换为long。运算符-不能应用于int、BigDecimaljava.math.。 我的代码是这样的: 我该如何解决这个问题?
我有以下接口和类: 抽象规则类包含一组标准。我想通过评估每个标准来评估规则。我在标题中提到的c1.evaluate().和(c2.evaluate())上有编译错误。 我应该如何解决这个问题? 谢谢。