使用泛型实例化java数组

时间:2015-02-06 14:29:43

标签: java generics

我正在创建一个列表数据结构,并且在实际使用它时遇到了泛型语法的问题。我要做的就是创建一个ArrayLinearList<String>并且大小为2的实例,并在其中添加一些字符串。我一直试图弄清楚为什么将第一个插槽设置为&#34;一个&#34;是不正确的。这是错误和我的代码段。

   myList[0] = "one";

错误消息为:错误:不兼容的类型:字符串无法转换为ArrayLinearList<String>

public class ArrayLinearList<E> implements LinearListADT<E> {


 private Object[] array;
int currentSize = 0;

//Constructor (no arguments)
public ArrayLinearList() {
    currentSize = 2;  
    // array = (ArrayLinearList[]) new Object[2];   //Start with a container of size 2
    array = new Object[2];
}
   public static void main(String[] var0) {

       ArrayLinearList<String>[] myList;
       myList = new ArrayLinearList[2];
       myList[0] = "one";
   }
}

我在使用java中的泛型语法时遇到了一些麻烦。在我看来,我有一个大小为2的数组,我将放置字符串。我稍后会添加更多方法,但我想了解为什么我的当前语法不正确将此字符串放在数组中。

3 个答案:

答案 0 :(得分:1)

下面:

   ArrayLinearList<String>[] myList;

您定义了一个包含ArrayLinearList<String>元素的数组,而不是字符串,这就是您收到错误消息的原因。

答案 1 :(得分:1)

您的代码

ArrayLinearList<String>[] myList;
myList = new ArrayLinearList[2];//you have defining array myList of type ArrayLinearList
myList[0] = "one";//you are trying to store String to array which can hold ArrayLinearList

此处ArrayLinearList<String>表示您的列表将包含String类型的值(前提是我们在代码中正确定义它)。但是ArrayLinearList<String>[]将仅包含ArrayLinearList类型的引用,而不是String本身。

答案 2 :(得分:0)

您需要使用

myList.array[0] = "one";

因为myList不是数组。它是用于存储数组的对象。