Java中泛型的使用

Seven的代码实验室 2013-01-19 02:24:54
ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象
希望给出源代码和详细解析求助!
...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oHeiYe1 2013-01-20
  • 打赏
  • 举报
回复
引用 5 楼 suciver 的回复:
泛型只是在编译期检查而已,编译后是会被擦除掉的。只是内部会多一步强转的过程,由于这一特性所以要骗过他就不能用正常的写法进行的add。用反射就可以了。 ArrayList<Integer> list = new ArrayList<Integer>(); Method method=list.getClass().getMethod("add",Object.class……
学习,原来通过反射可以这样做啊
suciver 2013-01-20
  • 打赏
  • 举报
回复
泛型只是在编译期检查而已,编译后是会被擦除掉的。只是内部会多一步强转的过程,由于这一特性所以要骗过他就不能用正常的写法进行的add。用反射就可以了。 ArrayList<Integer> list = new ArrayList<Integer>(); Method method=list.getClass().getMethod("add",Object.class);//获取他的add方法 method.invoke(list,"testAddStringOnIntergerGenericList");//在list上调用add相当于list.add System.out.println(list.get(0));//你就会发现已经添加进去了
YoungerDreamer 2013-01-19
  • 打赏
  • 举报
回复
二楼的头像很sexy哈。给枯燥的技术专区带了很大的波澜呀。
YoungerDreamer 2013-01-19
  • 打赏
  • 举报
回复
因为所有的java的类都默认继承自Object类。所以根据java多态的特性。子类的实例都包含有一个父类(基类)的对象引用。因为实例alist 和list都同时指向了一个Arraylist的实例。关键是list这个对象引用没有进行泛型的强制说明,因此该list可以聚集字符串类型的变量。但是在引用这些变量的时候必须进行向上类型转换才可以。否则编译器回编译不通过。因此才有了那个for循环必须用Object类型。
nmyangym 2013-01-19
  • 打赏
  • 举报
回复
我一直弄不清楚这个泛型,在我在看帖子http://bbs.csdn.net/topics/390349747时,偶尔测试发现可以的。但不知道这是为什么?也许我理解错误,希望给予指正。 可以把这个list赋值给一个非泛型的ArrayList变量,就可以加进去其他对象。

import java.util.*;
public class AddStringToIntegerList{
    public static void main(String[] args){
        ArrayList<Integer> aList = new ArrayList<Integer>();
        aList.add(1);
        aList.add(2);
        ArrayList list=aList;//把泛型对象赋值给非泛型变量.
        list.add("abc");     //通过这个变量加入非Integer内容。
        System.out.println(aList.size());
        for(Object o:aList){
            System.out.println(o);
        }
    }
}
rome_wu 2013-01-19
  • 打赏
  • 举报
回复
不可能实现的,只能存同一类型的数据

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧