泛型的表现形式

泛型:
   *  泛型是java中的类型
   *  java.lang.Type可以代表java中的所有的类型
   *  泛型是被参数化的类型
        *  类型   --->Class
        *  被参数化-->Class类型可以传递参数
   *  泛型的存在的意义
        *  多态
            实际的类型和需要的类型有可能不匹配
            如果不匹配,则会报ClassCastException错误
        *  泛型可以在编译的时候告诉Class类型,传递的参数
           是什么类型,如果类型错误,则在编译的时候就会
           报错
   *  泛型所表现的形式
        *  ArrayList<T>
           *  ArrayList是Class类型
           *  ArrayList带一个参数为T,T是一个形参
           *  在创建ArrayList对象的时候,就可以决定实参
           *  表现:ArrayList<Person> a = new ArrayList<Person>();
                   这样实参为Person,这就意味着a集合中只能存放person
        *  public interface PersonDao<T>{

}
           public class BaseDaoImpl<T>{

}
           public class PersonDaoImpl extends BaseDaoImpl<Person> implements PersonDao<Person>{

}
        *  public class Person<? extends Collection>传递的参数只能是集合的子类
    *  泛型的用法
        public class Person<T>{

}
        该参数T可以用在属性和方法(可以用在方法的参数和返回值)上
       

时间: 2024-08-09 06:34:11

泛型的表现形式的相关文章

理解C#泛型

在C# 2.0中引入了泛型,泛型的出现解决了编码中的很多问题.相信大家一定经常用到"System.Collections.Generic"命名空间中的泛型集合类("Generic"就是泛型的意思).在C# 1.0中,我们还在使用"System.Collections"命名空间中的非泛型集合类,那么看看我们在没有泛型的时候遇到的问题. 问题1:强制类型转换 ArrayList stuList = new ArrayList(); Student w

《CLR via C#》读书笔记 之 泛型

第十二章 泛型 2014-06-15 初始泛型12.3 泛型基础结构  12.3.1 开放类型与封闭类型  12.3.2 泛型类型和继承  12.3.3 泛型类型同一性  12.3.4 代码爆炸参考 初始泛型[1][2] 返回 泛型(generic)是CLR和编程语言提供一种特殊机制,它支持另一种形式的代码重用,即"算法重用". 简单地说,开发人员先定义好一个算法,比如排序.搜索.交换等.但是定义算法的开发人员并不设定该算法要操作什么数据类型:该算法可广泛地应用于不同类型的对象.然后,

类型参数化-泛型

中间因为比较忙,空了那么多天,都感觉有点罪过了.话不多说,这一篇主要是要讲C#2.0提出的一个新特性,那就是泛型.(现在都C#6.0了.囧囧) 1.什么是泛型? C#1.0中的委托特性使方法可作为其他方法的参数来传递,而C#2.0中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的方法实现.从字面上来的意思来讲,泛型代表的就是“通用类型”,它可以代替任意的数据类型,使类型参数化,从而达到只实现一个方法就可以操作多种数据类型的目的,将实现行为与方法操作的数据类型分离,实现了代

Java基础---泛型、集合框架工具类:collections和Arrays

第一讲     泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类型的数据,无法加入指定类型以外的数据. 3.泛型是提供给javac编译器使用的可以限定集合中的输入类型说明的集合时,会去掉“类型”信息,使程序运行效率不受影响,对参数化的泛型类型,getClass()方法的返回值和原始类型完全一样. 4.由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就

黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API

一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 2.泛型技术是给编译器使用的技术,用于编译时期,确保类型的安全. 3.泛型的擦除:运行时,会将泛型去掉,生成class文件中的是不带泛型的,这个称为“泛型的擦除”.擦除泛型的原因是为了兼容运行时的类加载器. 4.泛型的好处:(1)将运行时期出现的问题ClassCastException,转移到了编译时期.方便于程序员解决问题,让运行时期问题减少.安全.(2)避免了强制转换的麻烦. 5.泛

Java基础学习笔记十五 集合、迭代器、泛型

Collection 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 集合中存储的元素必须是引用类型数据 集合继承关系图 ArrayList的继承关系: 查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口.Collec

Func&lt;T&gt;与Action&lt;T&gt;委托泛型

Func<T>与Action<T>委托泛型介绍 .Net 3.5之后,微软推出了Func<T>与Action<T>泛型委托.进一步简化了委托的定义. Action<T>委托主要的表现形式如下: public delegate void Action(); public delegate void Action<T1>(T1 arg1); public delegate void Action<T1, T2>(T1 arg1

黑马程序员——17,集合,TreeSet,二叉树,泛型

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- /* TreeSet:可以自动对容器内部元素排序 */ import java.util.*; //Collection接口的体系放在Java.util包里面 class Jihe13 { publicstatic void main(St

day191、集合 2、Iterator迭代器 3、增强for循环 4、泛型

今日内容介绍 1.集合 2.Iterator迭代器 3.增强for循环 4.泛型 =======================第一节课开始============================================= ###01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<