很简单。
String strings[] = {"Broken","Type", "system"};Object objects[] = strings;objects[0] = 5; // compiles fine, but throws ArrayStoreException at runtime
只要您将内容取出,协变类型就不错,但是放入内容的那一刻,整个事情就破裂了。假设您有一个采用Object []作为参数的方法。
fn(Object[]a){... }
能用调用它不是很好
String[]吗?
String[] s = {"I","didn't","know","that","this","was","broken"} fn(s);
好吧,听起来很自然,尤其是在我们没有通用语言的早期。只要没有任何突变,所有这些都可以正常工作,并且Java不提供任何机制来保证这一点。
你应该总是青睐
Lists过
arrays,因为
Lists使用
generics它是不变的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)