`
deng_1987
  • 浏览: 6536 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ArrayList 中的泛型

    博客分类:
  • java
 
阅读更多
上回也在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不能通过反射来加入整形
分享到:
评论

相关推荐

    C#中数组Array,ArrayList,泛型List详细对比

    在C#编程中,数组、ArrayList和泛型List都是用来存储一组对象的数据结构,但它们各有特点和适用场景。下面将详细对比这三种数据结构。 首先,数组(Array)是最基本的数据结构,用于存储固定数量且同类型的元素。在...

    Java中泛型的各种使用

    在泛型中,如果尝试向泛型容器添加不匹配的类型,编译器会报错。然而,通过反射或构造旧版本API的方式,仍然可能存在创建“野指针”(即不匹配类型的引用)的风险,这被称为类型擦除的副作用。 9. 有限的多态性 ...

    .net 中的泛型示例

    在这个".NET中的泛型示例"中,我们将探讨ArrayList、List、Hashtable以及Dictionary, TValue&gt;等泛型类型的使用。 1. ArrayList:虽然ArrayList是.NET早期版本中常用的动态数组,但它并不支持泛型。这意味着在...

    JAVA-泛型课件-泛型课件

    泛型中不能直接使用基本数据类型,如`int`、`float`、`double`等,因为泛型机制需要的是对象类型。不过,Java为每一种基本数据类型都提供了一个对应的包装类,例如`Integer`对应于`int`,`Float`对应于`float`。在...

    Java中的泛型

    ### Java中的泛型 #### 什么是泛型? 泛型是Java SE 5.0中引入的一项新特性,它允许在程序设计中使用参数化类型,从而实现类型安全的集合类和其他容器类。在使用泛型之前,Java程序员通常依赖于Object类型作为通用...

    excel中取出泛型数据存入泛型的list中

    下面我们将详细讨论如何在Excel中提取泛型数据,并将这些数据存入泛型的List中。 首先,我们要理解什么是泛型。泛型是Java和C#等现代编程语言中的一种特性,允许在数据结构(如List)中指定元素类型。这样做可以...

    学士后Java集合框架和泛型课后习题答案

    在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个框架允许我们高效地处理各种数据结构,而无需从头开始编写代码。泛型则是Java 5引入的一项...

    ASP.NET 的泛型实例

    在"ArrayListDemo"这个示例中,我们可能看到了如何从传统的ArrayList转换到使用泛型集合List的过程。ArrayListDemo可能包含以下步骤: 1. 创建ArrayList实例并填充数据。 2. 遍历ArrayList,演示类型转换的必要性。...

    java泛型的内部原理及更深应用

    9. **集合框架中的泛型**:Java集合框架广泛使用了泛型,如ArrayList、LinkedList、HashMap等。使用泛型,可以确保集合只存储特定类型的元素,避免了不兼容类型的元素混入集合中。 10. **Erasure和类型安全**:尽管...

    java泛型学习ppt

    * 泛型中有继承的概念吗? * ArrayList&lt;Integer&gt; al2=new ArrayList(); //1 al2.add(new Integer(10));//2 Integer i2=al2.get(0);//3 ArrayList&lt;Object&gt; alO=al2;// 这样可以吗? * 如果说 ArrayList&lt;Integer&gt; 是一...

    关于java基础的泛型的练习

    泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的重用性。下面将详细解释Java泛型的基本概念、使用方式以及相关的知识点。 1. 泛型的基本...

    C#中的泛型集合

    在C#中,System.Collections和System.Collections.Generic命名空间提供了各种集合类,如ArrayList、LinkedList、Queue和Stack等。然而,这些非泛型集合存在一些局限性,比如类型转换的开销和安全性问题。 泛型集合...

    C#泛型学习和理解代码示例

    泛型集合(如`List&lt;T&gt;`)与非泛型集合(如`ArrayList`)相比,提供了更好的类型检查和性能。泛型集合避免了非泛型集合中的类型转换开销。 综上所述,C#泛型是一个强大的工具,它提高了代码的灵活性、复用性和效率...

    java泛型的应用

    在Java中,泛型主要应用于集合框架,如ArrayList、LinkedList、HashMap等。在使用泛型前,集合可以存储任何类型的对象,但在访问集合元素时,需要手动进行类型转换,这可能导致运行时错误,如ClassCastException。而...

    C#泛型集合与非泛型集合

    非泛型集合主要位于 `System.Collections` 命名空间中,包括但不限于 `ArrayList`, `Hashtable`, `Queue`, `SortedList`, `Stack` 等。这些集合在设计之初并未考虑到类型安全性的问题,因此它们只能存储 `object` ...

    java 1.5泛型详解

    本文将深入探讨Java泛型的概念、优点、使用方式及其在实际开发中的应用。 **一、泛型的基本概念** 泛型是Java语言中的一种参数化类型,它允许在定义类、接口和方法时使用类型参数,从而实现数据类型的模板化。通过...

Global site tag (gtag.js) - Google Analytics