上回也在javaeye看了一篇文章,讲的是ArrayList泛型,不过不是普通的add,而是通过
反射来加入对象。
先把代码贴出来
public class Test01 {
public static void main(String[] args) throws Exception{
[color=red]ArrayList<Integer>[/color] arr1=new ArrayList<Integer>();
[color=red]ArrayList<String>[/color] arr2=new ArrayList<String>();
//下面打印出来true,证明泛型只是编译器级别的一个东西,加载到内存还是一样的
System.out.println(arr1.getClass()==arr2.getClass());//一样把
//那么可以用跳过编译器用反射直接加入不通类型的东西,测试打印出"dodo"字符串
arr1.add(88);
arr1.getClass().getMethod("add", Object.class).invoke(arr1, "dodo");
System.out.println(arr1.get(1));//打印出来dodo
System.out.println(arr1.get(0) instanceof Integer);//true
System.out.println(arr1.get(1).toString());//报错(可能是在使用方法的时候,强制转换成Integer就报错了)
//既然如此那么下面这个也应该能正确打印,但是报异常异常为: java.lang.ClassCastException
arr2.add("why");
arr2.getClass().getMethod("add", Object.class).invoke(arr2, Integer.valueOf(33));
System.out.println(arr2.get(1));//就报错,可能是arr2.get(1)转换成string报错
}
}
注意:红色的不能换掉
请大家发表下自己的看法。(额,这断代码,是我前几天看地,忘记URL了,抱歉)
arr1通过反射加入字符串的时候没事,但是提取出来,使用方法的时候就报错
arr2不能通过反射来加入整形
分享到:
相关推荐
关于数组Array,ArrayList,泛型List,简单的说数组就是值对象,它存储数据元素类型的值的一系列位置.Arraylist和list可以提供添加,删除,等操作的数据. 具体如何进行选择使用呢,我们来详细探讨下
我们在使用动态数组实现 ArrayList 的时候,如果希望这个 ArrayList 不仅仅支持一个类型的话,我们可以给这个 ArrayList 定义泛型,泛型中存放的是T类型。在实际创建出这个 ArrayList 对象时,我们可以指定泛型中的...
用于约束集合中存储元素的数据类型 1.2ArrayList类常用方法【应用】 1.2.1构造方法 1.2.2成员方法 1.2.3示例代码 public class ArrayListDemo02 { public static void main(String[] args) { //创建集合 ...
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求。 由于这种限制不方便,所以出现了ArrayList。 ArrayList、List ArrayList是可变长数组,你可以将任意多的数据Add到ArrayList...List是ArrayList的泛型
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求。 由于这种限制不方便,所以出现了ArrayList。 ArrayList、List ArrayList是可变长数组,你可以将任意多的数据Add到...List是ArrayList的泛型版
代码如下:using System.Collections; ArrayList a = new ArrayList(); a.Add(“a”);//这里”a”可以改成你要取出的字符串 a.Add(“b”); 运行后a就相当于一个... 您可能感兴趣的文章:C#中数组Array,ArrayList,泛型
软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和...很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情况: ArrayList al=new ArrayList(); al.Add(0);
在C#开发中,必不可少的要用到泛型。泛型是.NET2.0版本就有的,它广泛应用于C#框架中容器的使用中。下面我们来详细介绍一下。 一、泛型的主要优势 1.性能更高。 2.类型更安全。 3.代码更多的重用和扩展性。 ...
day07_18_ArrayList练习三_按指定格式遍历集合字符串
2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或...
java arraylist源码泛型示例 Java源代码程序,通过使用应用于ArrayList的用户定义的数据类型来演示泛型概念的示例
如Java.util.ArrayList, 编译器可以用Generics来保证类型安全。 在我们深入了解Generics之前,我们先来看一看当前的java 集合框架(Collection)。在j2SE1.4中所有集合的Root Interface是Collection Collections ...
目录1. 泛型的用处2. 泛型类与接口2.1 基本用法2.1.1 泛型的声明2.1.2 示例2.2 注意事项3. 泛型方法4. 泛型类型的继承规则5. 通配符类型5.1 没有限制的通配符5.2有限制的通配符 ...ArrayList中的E称为类型参数变量 Arra
简单介绍 里氏替换原则 简单工程模式 实现任意排序 使用了 is 和 as 方法 ArrayList数组 与 List泛型集合 Hashtable数组 与 Dictionary,v>泛型集合 的基本使用 序列化 将数据存储
List myIntList = new ArrayList();// 1 myIntList.add(new Integer(0));// 2 Integer x = (Integer) myIntList.iterator().next();// 3 第3 行的类型转换有些烦人。通常情况下,程序员知道一个特定的list 里边放的...
Java程式庫源碼,從中學習更多的泛型語法。圖 9a是 java.util.ArrayList的 JDK1.5源碼,圖 9b是其 JDK 1.4源碼,可資比較。 #001 public class ArrayList<E> extends AbstractList<E> #002 implements ...
存放学生数据用我们学过的ArrayList,由于类是一种引用数据类型,所以我们可以将泛型指代成Student 编写逻辑 业务层调用逻辑层,逻辑层调用数据层 知识点 面向对象,ArrayList,泛型,循环,迭代,switch 具体代
数组的概念 数组的申明和使用 Array类 ArrayList 泛型的使用 泛型的特征 泛型类、接口、方法的编写和使用 集合接口 枚举
泛型集合12.3.4 泛型集合泛型的场景:定义泛型:12.3.5 Colletions工具类 12.3.4 泛型集合 ...import java.util.ArrayList; import java.util.LinkedList; public class TestBasicGeneric { public s