加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java泛型和Number类

发布时间:2020-12-15 00:58:24 所属栏目:Java 来源:网络整理
导读:我想创建一个方法来比较一个数字,但可以有一个数字的任何子类的输入. 我以下列方式看待这样做: public static T extends Number void evaluate(T inputNumber) { if (inputNumber = x) { ... }} 在我可以执行比较之前,我需要获得实际的primative,Number类有
我想创建一个方法来比较一个数字,但可以有一个数字的任何子类的输入.

我以下列方式看待这样做:

public static <T extends Number> void evaluate(T inputNumber) {
  if (inputNumber >= x) {
    ...
  }
}

在我可以执行比较之前,我需要获得实际的primative,Number类有一个方法来为每个primative提取这个,但是我想要一个干净的方式来选择正确的.

这可能吗?

干杯

解决方法

不幸的是,没有办法从包装类型获取原始类型,而不诉诸if / else块.

问题在于,不可能以通用的方式实现这种方法.这里有一些看似可能的方法,可以期望在Number类中找到:

public abstract X getPrimitiveValue();

这会很好,不是吗?但是这是不可能的.没有可能的X可能是int,float,double等的抽象.

public abstract Class<?> getCorrespondingPrimitiveClass();

这也不会有帮助,因为没有办法实例化原始类.

所以你可以做的唯一的事情是所有类型的共同之处就是使用longValue()或doubleValue()方法,但是如果你正在处理错误的类型,你将失去信息.

所以没有:java数字层次结构只是不适合以通用的方式解决这些问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读