限定变量为Number用泛型编程的方式把两数相加,只有参数是Double或Integer时透用泛型方法求和并返回求和的值
时间: 2024-03-01 17:56:10 浏览: 88
参数数目可变的函数 求和
好的,这是一个使用泛型编程的方法来实现两数相加的示例代码:
```java
public class NumberAdder {
public static <T extends Number> double add(T num1, T num2) {
if (num1 instanceof Double || num2 instanceof Double) {
return num1.doubleValue() + num2.doubleValue();
} else {
return num1.intValue() + num2.intValue();
}
}
}
```
这个方法使用了一个泛型类型参数 `T`,它被限定为 `Number` 类型或其子类型。在方法内部,我们使用 `instanceof` 运算符来判断传入的参数类型是否为 `Double` 或 `Integer`。如果是 `Double`,我们就使用 `doubleValue()` 方法将其转换为 `double` 类型,然后进行加法运算;否则,我们就将其转换为 `int` 类型,然后进行加法运算。
我们可以通过下面的代码来测试这个方法:
```java
public static void main(String[] args) {
double sum1 = NumberAdder.add(1.5, 2);
System.out.println(sum1); // 输出 3.5
int sum2 = NumberAdder.add(3, 4);
System.out.println(sum2); // 输出 7
// 下面这行代码会编译错误,因为 String 不是 Number 类型
// double sum3 = NumberAdder.add("1.5", 2);
}
```
注意,如果我们尝试将一个非 `Number` 类型的参数传入 `add` 方法中,代码是会编译错误的。因此,我们可以通过泛型编程来实现类型安全的计算。
阅读全文