我可以在java中添加两个通用值吗? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以在java中添加两个通用值吗? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我用的是实例。但是有没有其他方法来添加两个通用值。可以这样做吗?

     public static<T extends Number> T add(T x, T y){
      T sum;
      sum=x + y;
      return sum;
     }
答案

你可以这样做来支持整数和双精度(和浮点数),虽然我没有看到真正的价值

public static<T extends Number> T add(T x, T y){

    if (x == null || y == null) {
        return null;
    }

    if (x instanceof Double) {
        return (T) new Double(x.doubleValue() + y.doubleValue());
    } else if (x instanceof Integer) {
        return (T)new Integer(x.intValue() + y.intValue());
    } else {
        throw new IllegalArgumentException("Type " + x.getClass() + " is not supported by this method");
    }
 }
另一答案

我会说你不能因为Number抽象类不提供“添加”操作。

我认为使用Number可以做的最好的事情是使用doubleValue()方法,然后使用+操作。但是你将有一个双返回类型(也许你可以在调用方法中强制转换为你的concret类)

    public static <T extends Number> double add(T x, T y) {
       double sum;
       sum = x.doubleValue() + y.doubleValue();
       return sum;
    }

小心无效检查

注意精度损失(例如:BigDecimal)

另一答案

编辑:不,不幸的是,你实际上不能这样做,因为你不能将Double转换为Integer,例如,即使你可以将一个double转换为int。

我猜你可以这样做:

public static<T extends Number> T add(T x, T y){
  Double sum;
  sum = x.doubleValue() + y.doubleValue();
  return (T) sum;
}

可能有意义,至少对于Number的大多数子类来说......

以上是关于我可以在java中添加两个通用值吗? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SIC / XE我可以将新值添加到已具有其自身值的值吗?

我可以使用 React Native 的异步存储从本地存储中获取值吗?

我可以在 mySQL 中添加带有条件的值吗?

可以在 django 模型验证器中使用多个值吗?

Java 类有默认值吗?

我可以在 C# 中的一行中编辑多个数组值吗