在以下示例代码中:
int[] ary = new int[10];
//Double[] ary = new Double[10];
double x = 10.0;
...
if (Double.class.isInstance(ary))
ary[0] = x;
else
ary[0] = (int)x;
我想通过将数组'ary'设置为整数或双精度来测试程序。不幸的是,我做不到。如果我将'ary []'设置为整数,则赋值'ary [0] = x'会产生compliter错误“不兼容的类型:可能有损转换从double到int”。如果我将'ary []'设置为double,则会使用赋值'ary [0] =(int)x'生成错误。简而言之,这是一个不赢的局面。我唯一能做的就是评论两项任务中的一项。但是,我必须这样做十几次。根本不实用!知道如何处理这个吗?
答案 0 :(得分:3)
如果您想要一个通用容器来存储int
和double
,请使用Number
类
Number[] numbers = new Number[10]
numbers[0] = 10; //int
numbers[1] = 10.0; //double
但要注意两个赋值涉及装箱,即将原语转换为相应的包装器。换句话说,它涉及创建与基元对应的包装类的对象。因此,此处10
和10.0
分别对Integer
和Double
类型的对象加框。
答案 1 :(得分:1)
您可以使用多态:
int ary[] = new int[10];
// double ary[] = new double[10];
System.out.println(foo(ary)); // prints 'int'
使用重载方法:
String foo(int[] ary) {
ary[0] = 1234;
return "int";
}
String foo(double[] ary) {
ary[0] = 1234.5678;
return "double";
}