对同一方法使用不同的数据类型

时间:2018-03-21 14:58:39

标签: java methods

我想在一个方法中分别使用double值和int值作为方法的参数,我该如何实现?该方法在同一方法中乘以两个整数和两个双数。输出应该是两行,一行是整数,另一行是双值

2 个答案:

答案 0 :(得分:2)

最有效的方法是重载方法:

void foo(int i)
void foo(double i)

但将int分配给double也是有效的,因此您也可以只提供:

void foo(double i)

同时接受intdouble

重载的替代方法是使用接受泛型类型的方法定义泛型类:

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);

请注意,数字包装器会占用更多内存作为原始计数器部件 因此,重载的第一种方法确实是最有效的。

你还有很多其他办法来处理这个问题。 所有这些都表明你应该按照你的要求使用某种方式。

答案 1 :(得分:0)

对于某些int / double类型安全的计算,你可以使用它:

has_many :linked_team_1_constraints, class_name: 'LinkedTeamConstraints', foreign_key: :season_team_id_1, dependent: :destroy   
has_many :linked_team_2_constraints, class_name: 'LinkedTeamConstraints', foreign_key: :season_team_id_2, dependent: :destroy

如果您想使用特殊类型的函数(舍入/浮动行为/ ...),您可以使用<T> T calc(T a, Tb) { }; 并使用instance ofINT或调用帮助方法。 ..或者只是在DOUBLE中进行。