假设我有这些类(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/