为了账号安全,请及时绑定邮箱和手机立即绑定

Java 方法重载——在某些情况下将方法合并为一个方法?

Java 方法重载——在某些情况下将方法合并为一个方法?

慕勒3428872 2023-10-13 16:29:48
虽然我了解方法重载的重要性,但我很好奇是否可以为以下代码编写单个添加函数:public class Add {    public int add(int i, int j) {        return i + j;    }    public double add(double i, double j) {        return i + j;    }}
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

另一个答案行不通,但如果我们稍微修改一下,它就可以工作:


public Number add(Number i, Number j) {

    if(i instanceof Integer && j instanceof Integer) {

        return i.intValue() + j.intValue();

    } else if(i instanceof Double && j instanceof Double) {

        return i.doubleValue() + j.doubleValue();

    } //you can check for more number subclasses

    return null; //or throw and exception

}   

但这比超载要丑陋得多。


查看完整回答
反对 回复 2023-10-13
?
千巷猫影

TA贡献1829条经验 获得超7个赞

您可以采用通用方法,而不是重载。


public static class Utils {


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

    if (x instanceof Integer) {

        return ((Integer) x).intValue() + ((Integer) y).intValue();

    } else if (x instanceof Double) {

        return ((Double) x).doubleValue() + ((Double) y).doubleValue();

    }

    return 0;

   }

}

并像这样使用它


Utils.<Double>multiply(1.2, 2.4); // allowed

Utils.<Integer>multiply(1.2, 2.4); // not allowed

Utils.<Integer>multiply(1, 2); // allowed


查看完整回答
反对 回复 2023-10-13
?
holdtom

TA贡献1805条经验 获得超10个赞

当然有可能。首先,double 函数可以接受 int 值,因此如果需要,您可以将其用于两者。但是,如果您仍然想实现目标,最好的方法是使用泛型。另一种方法是让您的方法接受两个类的父类(例如 Object),然后进行适当的转换,如下所示:


public class Add {


   enum ParamType {

       INT,

       DOUBLE

   }


   public static Object add(Object i, Object j, ParamType paramType) {

       if (paramType.equals(ParamType.INT)) {

           return (int) i + (int) j;

       } else {

           return (double) i + (double) j;

       }

   }


   public static void main(String[] args) {

       System.out.println(add(3.4, 5.2, ParamType.DOUBLE));

       System.out.println(add(3, 5, ParamType.INT));

   }

}


查看完整回答
反对 回复 2023-10-13
  • 3 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信