有条件地设置数组变量类型

Conditionally setting array variable type

我正在创建一个 Java 程序,它将以图形方式显示点。 坐标从 .txt 文件中读取并存储在适当类型的数组中,int[]double[].

下面的代码说明了我想要的。 (虽然它不起作用,因为 Array 不是 int[]double[] 的超类。)

//Declare local variable
Array coordinates;

//Determine data type
if(scan.hasNextInt()){
    coordinates = int[10];
} else if(scan.hasNextDouble()){
    coordinates = double[10];
}

我正在考虑使用多态性,如您所见,但我不知道 int[]double[] 的超类是什么。他们的超类是什么?还是有更好的方法来进行这种条件输入?如果我使用 Object 超类来声明 coordinates,那么它就不会像数组一样工作。


这是作业。我在这里要解决的问题的详细信息如下:

The program reads the values [of the text file], converting them to integers or doubles as appropriate, storing them internally in an array.

我解释说数组应该是它存储的类型,但也许它只是说将数组中的值存储为数值而不是原始 String 类型...

如果使用双精度数组,它将能够同时包含整数和双精度数:

    double[] coordinates = new double[10];

    coordinates[0] = 1.5; //double
    coordinates[1] = 2;   //integer

java 基本类型没有超类 - 它们不是对象。但是,自动装箱会转换它们,因此您可以只使用 Number 数组,它是数字 类:

的超类
  Number[] numbers = new Number[3];

然后:

  numbers[0] = 1.5f;
  numbers[1] = 1;
  numbers[2] = 3.2d;

  for (Number n : numbers)
     log.info("Type: "+n.getClass().getName());

将return:

Type: java.lang.Float
Type: java.lang.Integer
Type: java.lang.Double