java - 有没有一种方法可以返回泛型父类(super class)型而无需在 Java 中进行强制转换?

标签 java generics

假设我有这些类(class):

interface Field<T> {}

interface Function<T> extends Field<T> {}

interface UnaryFunction<INPUT, OUTPUT> extends Function<OUTPUT> {}

class UnaryFunctionImpl<INPUT, OUTPUT> implements UnaryFunction<INPUT, OUTPUT> {

  public Function<INPUT> asField() {
    return (Function<INPUT>) this;
  }

}

为什么asField()需要强制转换?这在某种程度上理论上是不合理的,还是编译器不够智能?

最佳答案

答案是否定的。因为Function<INPUT>Function<OUTPUT>是不同的类型,所以你必须告诉编译器你对你的行为负责。

关于java - 有没有一种方法可以返回泛型父类(super class)型而无需在 Java 中进行强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55864777/

相关文章:

java - 泛型的不兼容类型

generics - 如果我在函数内部创建引用,如何将泛型类型与需要生命周期参数的特征绑定(bind)?

java - 如何遍历LinkedTreeMap<String, Object>的所有值?

java - 带有子资源定位器的 Jersey 版本控制

java - 为什么 PMD 建议将 JSONArray 声明为最终的

java - 如何将 JAXB 运行时库与 OpenJDK 11 捆绑在一起?

java - 为什么我的角色无法移动?

java - 如何通过类类型委托(delegate)构造函数的实例化?

r - 将代表扩展到矩阵?

c# - 如何解决 - 无法使用 Automapper 将 Generic.List 转换为 Linq.IQueryable?