首页 > 解决方案 > Java 泛型类型转换

问题描述

我有一个关于 Java 泛型的问题。假设我有以下方法:

public <U> Logger<U> flatMap(Function<? super T, ? extends Logger<? extends U>> fMapper) {
      
      LoggerImpl<? extends U> updatedLogger = (LoggerImpl<? extends U>) fMapper.apply(this.item);
      ...

如何使用通配符 < 解释上述类型转换?扩展 U>? 使用 that 和 just 有什么区别LoggerImpl<U> updatedLogger = (LoggerImpl<U>) fMapper.apply(this.item);

标签: javagenericscasting

解决方案


基本上LoggerImpl<? extends U> 说的是它可以是 U 或 U 的任何子类,如果你必须LoggerImpl<U> updatedLogger使用 U 并且子类将不起作用。

希望我有所帮助!


推荐阅读