java - 有没有办法让 A<Number> 的子类 B<Double> 被强制转换为 A<Number>?

标签 java generics

我已经编写了一些通用代码来操作不同类型的数据,但我在处理数字数据时遇到了困难。

我有一个像这样的类布局:

public abstract class A<Number> {
  .
  .
  .
}

public class B extends A<Double>{
  .
  .
  .
}

但是,我无法使用 B作为A<Number> ,尽管 BA<Double> 的子类,它应该是 A<Number> 的子类.

我错过了什么?正确的做法是什么?

最佳答案

B不可能是A<Number>因为如果你有一个类似于 void doSomething(T) 的方法那么它不会接受 Integer (而 T returnSomething 可以工作,因为 Double 可分配给 Number )。

可以分配 BA<? extends Number> , 然而。这意味着“泛型类型是 Number某种未知子类型”,这通常是您所需要的。

关于java - 有没有办法让 A<Number> 的子类 B<Double> 被强制转换为 A<Number>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748646/

相关文章:

java - 将 self 添加到构造函数中的静态列表

java - 指定 vaadin 通知的自定义位置

java - 使用 Java 泛型、接口(interface)和继承的不兼容性

c# - 为什么我的泛型约束仍然需要转换?

java - bufferedreader 不会移动到下一行

Java的Thread.sleep导致我之前调用的方法取消

java - 在 Spring Boot 中,为什么我没有将一个服务类的返回值返回到另一个服务类

c# - 当直到运行时才知道列表类型时添加到列表

java - 在 Java 泛型是不变的?

C# 为 `WhereWithIndex` 编写类型签名