创建泛型数组运行报错详细:
Exception in thread "main" java.lang.ArrayStoreException: java.lang.String
at LinearTable.SequenList.SequenceList.insert(SequenceList.java:40)
at LinearTable.SequenList.SequenceListTest.main(SequenceListTest.java:6)
错误分析:
该错误的具体意思就是说数组存储异常,存储不了,换句话说就是存储的数据不能放到数组中去,该类型的数据不能识别。
调用泛型类时传递的参数类型是自己知道的,不能存储,这种情况大概率是创建泛型数组时出错了。如:
T[] arr = = (T[]) new Objects[capacity];
以上创建泛型数组的方式是错误的,该处创建泛型数组时导入了java.util包下的Objects,是错误的。创建泛型数组时不能直接创建,需要先创建Object类型数组,再强制转化为泛型。其中,还有需要特别注意的地方,Object类是java.lang包下的,不是org.omg.CORBA.Object;包下的Object,lang包是不需要导入的。
正确的创建泛型数组:
T[] arr = = (T[]) new Object[capacity];
注意:可以不用导包