菩提本无树明镜亦非台
2017-09-12 09:52JAVA泛型的问题:急求大神。一个关于"泛型"和Object[]数组的坑
下面是我写的一个Java代码,
我知道24行的直接转换是不行的,因为内部数组本质是一个Object[]的数组,但是运行该程序是会报错的,报错的位置是在25行,错误信息是类型转换错误。但是26行这样的写法是没有问题的,如果将25行注释掉,程序可以正常运行。我想知道的是25和26行代码区别在哪里,为什么25行是会报错的,是编译器做了什么事情吗?我看过这个源代码编译后的class文件,25行加入了一个类型检查,但是为什么会加上类型检查?挺急的,跪求大神解答。
源代码如下:
public class GenericArray {
private Object[] array;
public GenericArray(int size) {
array = new Object[size];
}
public void put(int index, T item) {
array[index] = item;
}
public T get(int index) {
return (T) array[index];
}
public T[] rep() {
return (T[]) array;
}
public static void main(String[] args) {
GenericArray<Integer> ga = new GenericArray<>(10);
for(int i = 0; i < 10; i++) {
ga.put(i, i);
}
for(int i = 0; i < 10; i++) {
System.out.println(ga.get(i) + " ");
}
System.out.println();
try {
System.out.println(ga.rep().toString());
System.out.println(((Object)ga.rep()).toString());
} catch(Exception e) {
e.printStackTrace();
}
}
}
- 点赞
- 回答
- 收藏
- 复制链接分享
8条回答
为你推荐
- Java中 非泛型类 定义泛型方法有什么用?
- java
- 泛型
- 6个回答
- java,我使用泛型数组的时候提示unchecked cast,下有图片代码
- java
- 泛型
- 3个回答
- 关于泛型的问题 Java 核心技术 一
- 编译器
- java
- 泛型
- 8个回答
- java泛型创建对象时出问题
- java
- 泛型
- 对象
- eclipse
- 8个回答
- 这段Java代码怎么加泛型,本人Java刚起步,望大神指点。
- java
- 泛型
- 栈
- 4个回答
换一换