Java泛型和Number类

前端之家收集整理的这篇文章主要介绍了Java泛型和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数字层次结构只是不适合以通用的方式解决这些问题.

原文链接:https://www.f2er.com/java/126247.html

猜你在找的Java相关文章