![](/img/trans.png)
[英]Is it possible to overload a method that takes the same data structure but different data types?
[英]Using different data types for the same method
我想在一种方法中分别使用double值和int值作为方法的参数,如何实现呢? 该方法是在同一方法中将两个整数与两个双数相乘。 输出应为两行,一行为整数,另一行为double值
最有效的方法是重载该方法:
void foo(int i)
void foo(double i)
但是将int
赋给double
也是有效的,因此您也可以只提供:
void foo(double i)
接受int
和double
。
重载的一种替代方法是使用可以接受通用类型的方法来定义通用类:
public class Bar<T extends Number>{
public void foo(T t){
...
}
}
您可以实例化它们:
Bar<Integer> barInt = new Bar<>();
barInt .foo(3);
Bar<Double> barDouble = new Bar<>();
barDouble.foo(3);
请注意,数字包装器将更多的内存用作原始计数器部分。
因此,过载的第一种方法实际上是最有效的。
而且您还有许多其他方法可以解决这个问题。 这就是说您应该根据需要使用某种方式。
对于一些对于int / double类型安全的计算,您可以使用以下代码:
<T> T calc(T a, Tb) { };
如果要对特殊类型使用函数(四舍五入/浮动行为/ ...),可以使用的instance of
并使用INT
或DOUBLE
或...调用帮助方法,或者仅在if-else
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.