参数化类型

时间:2011-01-06 04:38:30

标签: java parameters

我来自.Net背景,不了解以下片段。有人可以解释<>以下代码给我,因为我似乎没有得到它。抱歉愚蠢的问题,但这个我整个晚上一直在努力去理解。

List<double[]> x = new ArrayList<double[]>();

for (int i = 0; i < 3; i++) {
  x.add(new double[] { 1, 2, 3, 4, 5, 6 });
}

4 个答案:

答案 0 :(得分:2)

它们相当于C#泛型。它创建了一个双列阵列表,然后三次添加[1,2,3,4,5,6]。

答案 1 :(得分:1)

如果您创建List<T>,则可以将T的实例添加到列表中。在这种情况下,Tdouble[]

答案 2 :(得分:0)

在Java编程语言中,数组是对象,可以分配给java.lang.Object类型的变量。您的代码也可以这样编写

  

对象 numbers = new double [] {1,2,   3,4,5,6};

您的代码

List<double[]> x = new ArrayList<double[]>();

for (int i = 0; i < 3; i++) {
  x.add(numbers);
}

另一种变化:在这里我创建了“x”作为可以包含对象类型的List。因为,数组是Java中Object的子类,所以我可以将数组存储在这个列表“x”

List<Object> x=new ArrayList<Object>();

for (int i = 0; i < 3; i++) {
    x.add(numbers);
}

答案 3 :(得分:0)

对于列表,&lt;&gt;中的type参数指示应该在该列表中存储的对象类型。 List<double []>创建一个存储双精度数组的列表。

List<double []> myList = new ArrayList<Double>();
myList.add(new double [] {1,2,3});
myList.add(new double [] {4,5,6});

将两个双数组添加到myList。所以:myList.get(0)会返回:{1,2,3} 和myList.get(1)将返回:{4,5,6}。

如果您只是想创建一个双打列表,而不是双列阵列表,那么您可以这样做:

List<Double> myList = new ArrayList<Double>();
myList.add(1);
myList.add(2);
myList.add(3);

现在myList.get(0)将返回1并且myList.get(1)将返回2.请注意,要创建基本类型的列表,您需要在type参数中指定该基元类型的对象版本。即,你做不到:List<double>

这是因为编译器只会将所有类型参数转换为Object。