36_入门泛型的基本应用

 

package com.itcast.day2;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;

/**
 * 泛型入门
 *
 * @author ljl
 *
 */
public class GernericTest {

    public static void main(String[] args) throws Exception {

        /**
         * 不使用泛型时,eclipse中的黄色警告 Multiple markers at this line - ArrayList is a
         * raw type. References to generic type ArrayList<E> should be
         * parameterized 翻译:ArrayList是一个原始类型,参照泛型类型,ArrayList<E>应该被参数化。
         */
        ArrayList list = new ArrayList();
        list.add(1);
        list.add(1L);
        list.add("abc");
        // 运行期异常--类型转换: java.lang.ClassCastException: java.lang.String cannot be
        // cast to java.lang.Integer
        int i = (Integer) list.get(2);

        /** 使用了泛型 ***/
        List<String> list2 = new ArrayList<String>();
        list2.add("abc");
        // list2.add(1);//编译报错。
        // list2.add(1L);//编译报错。

        // java.lang.ClassCastException: java.lang.String cannot be cast to
        // java.lang.Integer
        // int i=(Integer)list2.get(0);//编译报错。
        String str = list2.get(0);
        System.out.println(str);// abc

        /** 反射中泛型的使用 ***/
        // 01.Constructor未使用泛型,构造对象完毕之后不知道是String

        /**不使用泛型时,eclipse中的黄色警告
         * Constructor is a raw type. References to generic type Constructor<T> should be parameterized
         * 翻译:Constructor是一个原始类型,应该参照泛型类Contructor<T>来参数化.
         */
        Constructor constructor = String.class
                .getConstructor(StringBuffer.class);
        String ss = (String) constructor.newInstance(new StringBuffer("abc"));

        // 02.Constructor使用了泛型,规定好构造器的类型是Stirng类型的
        Constructor<String> constructor2 = String.class
                .getConstructor(StringBuffer.class);
        String ss2 = constructor2.newInstance(new StringBuffer("abcd"));

    }

}
时间: 2024-11-15 09:34:50

36_入门泛型的基本应用的相关文章

Java入门——泛型(一)

Java入门——泛型(一) 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用:更重要的是它保证了数据类型的安全.但是设计泛型并没有那么容易,一个泛型程序员要做的就是预测出所有类未来可能的所有的用途. 一:目标 泛型程序设计分为3个等级,基本等级是使用泛型——典型的小ArrayList这样的集合——不必考虑它们的工作方式和原因.大多数程序猿将会停留在这个等级上,直到出现什么问题. 二:简单泛型类 package Sep22; public class Pair<T> {//泛型可以有多

TypeScript入门-泛型

泛型 要创建一个可重用的组件,其中的数据类型就必须要兼容很多的类型,那么如何兼容呢,TypeScript提供了一个很好的方法:泛型 Hello World 要兼容多种数据格式,可能会有人想到any,即 function identify(arg: any): any{    return arg; } 使用any存在一个问题,有可能传入的值和返回的值不是同一种值,例如,传入数字,但是不确定返回的是什么值 要解决这个问题,我们需要引入类型变量-一种特殊的变量,只用于表示类型不表示值 functio

java-基础入门-泛型数组列表-解决运行时动态更改数组的问题

泛型数组列表,主要是为了解决运行时动态更改数组的问题 平常我们会定义一个部门里面的人员的一个数组, 但是在实际业务当中,这个数组的大小往往是不确定的, 如果定义过大,那么会浪费空间,定义过小,又不够用, 因为为了解决运行时动态更改数组的问题,我们提出下面的解决方案. package com.ray.object; import java.util.ArrayList; /** * 泛型数组列表 ,解决运行时动态更改数组的问题 * * @author ray * @since 2015-05-04

C#入门泛型集合List&lt;T&gt;

泛型集合 List<T> List<T>泛型集合特点: <T>表示泛型,T是Type简写,表示当前不确定具体类型: 可以根据用户的实际需要,确定当前集合需要存放的数据类型,一旦确定不可改变: 使用泛型集合只能添加一种类型的数据,数据取出后无需强制转换 1 static void Main(string[] args)  2 { 3 //创建几个学员对象 4 Student objStudent1 = new Student(1001, "小明");

java基础入门-泛型(1)

为什么需要使用泛型? 1.代码复用 2.保证类型安全 3.编程的便利 第一部分,先说说代码复用 1)建立一个Animal的父类 package com.ray.test; public class Animal { private String name="Animal"; public String getName() { return name; } public void setName(String name) { this.name = name; } } 2)建立连个Ani

关于Java泛型的新解

////////////////////////////////////////////////////////////////////////////////为了方便您的观看,请在web版式视图在观看本文章.////////////////////////////////////////////////////////////////////////////////////////////// <关于泛型> -----------------------------------à入门泛型的基

[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 &amp; 大型控件的ImageField)

[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField) http://www.dotblogs.com.tw/mis2000lab/archive/2014/05/19/ashx_beginner_05_db_picture_show_download.aspx 根据前面三篇文章的教学 完成后可以做出来  (请您务必依照顺序学习,不要只是找范例来Copy) [.ashx檔?泛型处理程序?]基础入门#1.

Java泛型入门

  Java泛型入门 在学习本章之前,须要对Java的集合(Collection.Map)有一定的基础. Java集合有一个缺点.就是把一个对象"丢进"集合里后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了Object类型(其执行时类型没变). 之所以这样设计是由于设计集合的程序猿不会知道我们要用它来保存什么类型的对象,所以这样设计具有非常好的通用性.可是这样做带来例如以下两个问题: l  集合对与元素类型没有限制,如一个集合

IOS开发语言Swift入门连载---泛型

IOS开发语言Swift入门连载-泛型 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活且可重用的函数和类型.它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 泛型是 Swift 强大特征中的其中一个,许多 Swift 标准库是通过泛型代码构建出来的.事实上,泛型的使用贯穿了整本语言手册,只是你没有发现而已.例如,Swift 的数组和字典类型都是泛型集.你可以创建一个Int 数组,也可创建一个String 数组,或者甚至于可以是任何其他 Swift 的类型数据数组