java可选接口(interface)方法: Ambiguous method reference

标签 java java-stream

我已经编码了:

this.referenceService.get(id)
    .map(Reference::hashCode)
    .map(Integer::toString);

我收到此编译错误:

Ambiguous method reference: both toString() and toString(int) from the type Integer are eligible

我该如何解决这个问题?

最佳答案

您有两种可能的解决方案:

用 lambda 替换它:

this.referenceService.get(id)
    .map(ref-> Integer.toString(ref.hashCode()));

使用Objects.toString()

this.referenceService.get(id)
    .map(Reference::hashCode)
    .map(Objects::toString); // this will cal toString method on you hash

编写自己的方法:

this.referenceService.get(id)
    .map(this::toHashString);

private Strign toHashString(Reference ref) {
  return Integer.toString(ref.hashCode());
}

关于java可选接口(interface)方法: Ambiguous method reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54513279/

相关文章:

java - 操作 CSV 文件中的数据时出现问题 (JAVA)

java - 带系统错误 : Unexpected character () at position 0

java - 通用符号 <?> 和 < ?扩展对象 > 表现不同

java - 如何将 html 输入保存到列表中并在每次提交时显示?

java - 使用 java 8 对 Map<String, List<Object>> 进行排序

java - 比较数组java

java - 为什么使用基类作为方法引用会导致编译器错误

java - 使用 Stream 按给定索引序列排序

java - 两个列表与 java 8 合并

Java 8 - 将 <Map> 列表到单个映射中