如何避免Java中数字操作中的类型安全警告?

时间:2017-10-12 07:48:36

标签: java generics

我编写了一个类来为不同的Number类执行数字操作。但是,我在每个return语句中都会收到类型安全警告。

为什么return语句会导致类型安全问题,因为我已经知道,例如,summand1和summand2都是Double的实例?我该如何避免警告?

roI2urYfzQClEpLvatI8A8ZTrRkwEduAmMWllVBBLoaucnB0t2UCXcFVCiprA9aMOhP7T4wZb0ZOhKRTvWvslQXX

1 个答案:

答案 0 :(得分:1)

我认为你使这个问题比现在更困难。也许BigDecimal等可以为你做所有这些。但是如果你想坚持你的代码,那么如果删除所有泛型,它就会起作用:

public static Number addition(Number summand1, Number summand2) {
     if (!summand1.getClass().equals(summand2.getClass()))
          throw new IllegalArgumentException("Two different classes are used in the parameters: " + summand1.getClass().getName() + ", " + summand2.getClass().getName());
     if(summand1 instanceof Double && summand2 instanceof Double)
          return new Double(summand1.doubleValue() + summand2.doubleValue());
     else if(summand1 instanceof Float && summand2 instanceof Float)
          return new Float(summand1.floatValue() + summand2.floatValue());