`
哈达f
  • 浏览: 119516 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

泛型-

    博客分类:
  • j2se
 
阅读更多

 

泛型:JDK1.5版本出现的一个安全机制。
	好处:将运行时出现的问题(ClassCastException)转移到了编译时期。
	      避免了强转的麻烦。
	格式:通过<>在内指定操作的引用数据类型。

泛型可以定义在类上。

早期:
class Tool
{
	private Object obj;
	public void setObj(Object obj)
	{
		this.obj = obj;
	}
	public Object getObj()
	{
		return obj;
	}
}

main()
{
	Tool t = new Tool();
	t.setObj(new Worker());//当往里传递的参数为t.setObject(new Student());//编译通过,运行出现ClassCastException
	Worker w = (Worker)t.getObj();//必须要强转
}


现在:通过泛型类来完成。
class Tool<Q>
{
	private Q obj;
	public void setObj(Q obj)
	{
		this.obj = obj;
	}
	public Q getObj()
	{
		return obj;
	}
}

main()
{
	Tool<Worker> t = new Tool<Worker>();
	t.setObject(new Worker());//如果传入t.setObject(new Student());编译时会出现失败。
					//那么就是将运行时出现的问题转移到了编译时期。
	Worker w = t.getObj();//不需要在进行强转。
}

什么时候定义泛型类呢?
当类中要操作的引用数据类型不确定的时候,就使用泛型类。

在使用泛型类时,只有在建立泛型类对象时,才可以指定具体要操作的引用数据类型。
那么该对象在调用方法时,操作的类型都是相同的。

如果想方法在调用的时,操作的类型不确定,而且不相同,可以将泛型定义在方法上。

class Utils
{
	public <T> void printInfo(T t)
	{
		
	}
	public <Q> void show(Q q)
	{
		
	}
}


泛型的限定:
1,? extends E: 接收的是E类型对象或者E的子类型对象。
2,? super E:接收的是E类型对象或者E的超类,直至Object对象
分享到:
评论
1 楼 ricoyu 2011-10-23  
引用
? super E:接收的是E类型对象

应该是: ? super E:接收的是E类型对象或者E的超类,直至Object对象

相关推荐

    全面总结Java泛型--实例

    标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...

    java-泛型-面试题.docx

    java-泛型-面试题.docx

    29-API-集合框架-泛型-使用_java_

    Java 泛型是Java编程语言中的一个重要特性,它在2004年随着...这个视频教程"29-API-集合框架-泛型-使用"应该会深入浅出地讲解这些概念,对于想要提升Java编程技能的初学者或有经验的开发者来说,都是很好的学习资源。

    Java 第二阶段提升编程能力【泛型】---- 代码

    Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...

    java中的泛型-详细

    Java 泛型是JDK 1.5引入的一项重要特性,极大地增强了代码的类型安全性和重用性。泛型允许我们在编程时指定容器(如集合)所存储的对象类型,从而在编译时期就能捕获类型错误,避免了运行时的ClassCastException。 ...

    C#全面教程(集合-泛型-反射-内存管理-正则表达式-线程-安全-GDI等)

    包含11个Word文档,包含了C#的集合、字符串和正则表达式、泛型、内存管理和指针、反射、线程和同步、.NET的安全性、COM的互相操作性、文件和注册表操作、使用GDI+画图、Windows Presentation Foundation。...

    Generic_2(泛型类-泛型方法-泛型接口-泛型限定(上限)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    JAVA-泛型课件-泛型课件

    泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...

    补充知识:泛型1---马克-to-win java视频

    补充知识:泛型1---马克-to-win java视频的详细描述与介绍

    basic-sop:泛型-sop的基本示例和函数

    在Haskell中,泛型编程是一种重要的编程技术,它允许我们编写通用代码,可以处理多种数据类型。"basic-sop" 库就是针对这一点的一个实践示例,专门用于展示如何在Haskell中实现SOP(Signature of Product)风格的...

    Delphi泛型库--DGL

    **Delphi泛型库——DGL详解** 在Delphi编程环境中,DGL(The Delphi Generic Library)是一个非常重要的工具,它为开发者提供了类型安全、高效且易用的泛型容器和算法。这个库的设计灵感来源于C++的STL(Standard ...

    【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET

    【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET

    paraffin:Ada 2005和Ada 2012的迭代和递归并行性泛型-开源

    Ada 2012泛型套件可简化多核系统的迭代和递归并行性,并为单核和多核系统提供更安全的递归。 泛型包括适用于实时系统的Ravenscar兼容版本。 还包括石蜡,石蜡是一组有用的泛型,用于并行快速排序,快速傅立叶变换,...

    补充知识:泛型2---马克-to-win java视频

    补充知识2 ---马克-to-win java视频泛型的详细描述与介绍

    stl泛型编程--视频教程,讲的比较细

    ### STL泛型编程知识点解析 #### 一、STL与泛型编程概述 - **STL简介**:STL(Standard Template Library,标准模板库)是C++标准库的一个重要组成部分,它提供了一系列高效的数据结构和算法实现。STL的核心包括...

    集合与泛型

    ### 集合与泛型知识点总结 #### 泛型概览 - **引入原因**:在Java 1.5及之后的版本中,引入了泛型这一特性,旨在提高集合类使用的安全性与灵活性。主要解决的问题包括: - **元素存储的安全性问题**:在非泛型...

    TypeScript泛型类 - 把类作为参数类型的泛型类.zip

    在这个“TypeScript泛型类 - 把类作为参数类型的泛型类”示例中,我们将深入探讨如何利用泛型在TypeScript中创建灵活的、可复用的类模板。 泛型是TypeScript中的一个核心概念,它允许我们在编写代码时定义和重用...

    05-泛型架构-002.zip

    本demo是自己写的一个命令模式的demo,设计到了一般的命令模式,命令模式的变种,万能命令,block封装命令,复合型命令等等,对整个demo我写了一篇文章:https://www.jianshu.com/p/266794b9eda6 ,有兴趣的可以对照着文章...

    数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming

    数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming,作者;Alexander A. Stepanov Daniel E. Rose

    day02【Collection、泛型】-笔记.md

    day02【Collection、泛型】-笔记.md

Global site tag (gtag.js) - Google Analytics