我正在创建列表数据结构,并且在实际使用泛型语法时遇到了麻烦。我所要做的就是创建一个ArrayLinearList<String>
的实例,并且在其中放入一些字符串。我一直想弄清楚为什么把第一个插槽设置为“one”是不正确的。这是错误和我的代码片段。实例化使用泛型的java数组
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的数组,我将放置字符串。我将在后面添加更多方法,但我想了解为什么当前的语法对于将此字符串放入数组中不正确。
一般来说,泛型和数组不会混合使用Java。改为使用列表。 – 2015-02-06 17:28:20
@guillermoalvarez,我建议你快速阅读这个清晰的书面教程:http://www.javacodegeeks.com/2011/04/java-generics-quick-tutorial.html – 2015-02-06 17:43:47
@ tgm1024:我会描述编译器错误在“新T []”和“新Foo []”上显示为“不混合”。我完全理解不变泛型和协变数组之间的区别,但试图将泛型和数组合并在一起实际上并不是一个好主意,而使用'List'几乎总是一个更好的选择,不会强制你压制编译器警告或执行不安全的演员。 –
2015-02-06 17:49:06