String myFunction(Optional<ClassWithIdAsString> instanceWithIdAsString, Optional<ClassWithIdAsLong> instanceWithIdAsLong) {
String resultId = instanceWithIdAsString.map(ClassWithIdAsString::getId)
.map(id -> String.valueOf(id))
.orElseGet(t -> instanceWithIdAsLong
.map(ClassWithIdAsLong::getId));
return resultId;
}
上面的代码无法编译...我收到了以下错误信息:
方法引用中的返回类型错误: 无法将java.lang.String转换为U
在编译过程中:
在上述名称中,Long指的是Long包装类。我进行了大量研究,但没有找到类似的解决方法,希望能找到一些解决办法。将上述ID设置为相同类型对我来说不是一个选项。不兼容的类型: lambda表达式中的参数类型不兼容
.map
时,流会在映射返回值上工作,因此您将实体传递给映射并映射到String
,然后使用该字符串进行操作。 - R. KarlusmyFunction
方法中,返回Optional<String>
比返回String
更好。 - Hadi J