小编JTe*_*dor的帖子

Optional using a generic wild card in map and orElseGet

我准备了一个小例子来复制我的项目中发生的情况。我知道如何解决它,但我很好奇为什么它甚至无法编译。问题出在最后一个返回中,当我在方法中使用通用通配符时public TestElement<?> test(),正是该行return response.map((element) -> mapAux(50L)).orElseGet(()-> orElseGetAux(20));...我不知道为什么它无法编译。我究竟做错了什么?有什么线索吗?

提前致谢!

public class FullTest {
  public static class TestElement<T>{
    public T element;

    public TestElement(T t) {
      element = t;
    }
  }

  public static <U> TestElement<U> createElement(U input) {
    return new TestElement<>(input);
  }

  private TestElement<?> mapAux(Long element){
    return new TestElement<>(element);
  }

  private TestElement<?> orElseGetAux(Integer element){
    return new TestElement<>(element);
  }

  public TestElement<?> test(){
    Optional<Long> response =  Optional.of(5L);
    return response.map((element) -> mapAux(50L)).orElseGet(()-> orElseGetAux(20));
  }
}
Run Code Online (Sandbox Code Playgroud)

更新 1 - 包含错误

我使用的是 Java 8,而不是最新版本的 …

java generics

5
推荐指数
2
解决办法
2795
查看次数

标签 统计

generics ×1

java ×1