转载

泛型接口:

定义一个泛型接口:

通过类去实现这个泛型接口的时候指定泛型T的具体类型。

指定具体类型为Integer:

指定具体类型为String:

指定具体类型为一个自定义的对象:

泛型类:

在编译器,是无法知道K和V具体是什么类型,只有在运行时才会真正根据类型来构造和分配内存。

泛型方法:

引用其他人写的,觉得不错:

定义泛型方法时,必须在返回值前边加一个,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。

Class的作用就是指明泛型的具体类型,而Class类型的变量c,可以用来创建泛型类的对象。

为什么要用变量c来创建对象呢?既然是泛型方法,就代表着我们不知道具体的类型是什么,也不知道构造方法如何,因此没有办法去new一个对象,但可以利用变量c的newInstance方法去创建对象,也就是利用反射创建对象。

泛型方法要求的参数是Class类型,而Class.forName()方法的返回值也是Class,因此可以用Class.forName()作为参数。其中,forName()方法中的参数是何种类型,返回的Class就是何种类型。在本例中,forName()方法中传入的是User类的完整路径,因此返回的是Class类型的对象,因此调用泛型方法时,变量c的类型就是Class,因此泛型方法中的泛型T就被指明为User,因此变量obj的类型为User。

当然,泛型方法不是仅仅可以有一个参数Class,可以根据需要添加其他参数。

为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。

总结:泛型的使用使我们的代码更加具有通用性,不会导致定义了一种类型之后其他的类型都无法使用该代码。

通过泛型可以定义类型安全的数据结构(类型安全),而无须使用实际的数据类型(可扩展)。这能够显著提高性能并得到更高质量的代码(高性能),因为您可以重用数据处理算法,而无须复制类型特定的代码(可重用)。

19:54:52

2018-12-23

java 泛型 接口_Java泛型(泛型接口、泛型类、泛型方法)相关推荐

  1. java 泛型示例_Java泛型示例教程–泛型方法,类,接口

    java 泛型示例 Java Genrics is one of the most important features introduced in Java 5. Java Genrics是Java ...

  2. java泛型与接口_Java泛型用于方法,类和接口

    什么是泛型? 型就是数据类型参数化.就是说原本定死的数据类型像方法中的形参一样,数据是不确定的,使用的时候由人传进去,泛型就是这样,数据类型不确定了.使用的时候再确定就可以了. 泛型的特点 是JDK1 ...

  3. 泛型java 代码讲解_Java泛型详解

    2516326-5475e88a458a09e4.png 一,打破砂锅问到底 泛型存在的意义? 泛型类,泛型接口,泛型方法如何定义? 如何限定类型变量? 泛型中使用的约束和局限性有哪些? 泛型类型的继 ...

  4. java泛型特点_java泛型简单总结

    Java泛型简单总结 1)基本概念: 泛型(Generic Type或Generics)是 对Java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看做是使用参数化类型时 ...

  5. java泛型 包_Java泛型应用浅析

    Java泛型应用浅析 Java泛型,饿,这个东西吗,嚼一下还是有必要的.有啥用呢?小弟曾觉着吧,吹牛是条不错的出路,但没一次没有不吹破的.(绕吧^_^) 详解呢,没啥必要了,参见附件解压后Java泛型 ...

  6. java泛型 初始化_Java泛型详解

    概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有 ...

  7. java 泛型参数_Java泛型

    一.概述 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型.使用泛型机制编写的程序代码要比那些杂乱地使用Obje ...

  8. java 泛型默认_Java泛型的使用

    泛型的定义: 泛型,就是允许在定义类.接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型.这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量.创建对象时)确定( ...

  9. java泛型面试_Java泛型面试问题

    java泛型面试 Java面试中的通用面试问题在相当长的时间内在Java 5周围越来越普遍,许多应用程序都转移到Java 5上,并且几乎所有新的Java开发都发生在Tiger(Java 5的代号)上. ...

最新文章

  1. 同学我看你答题分钱总被淘汰你得充充电了!
  2. IDA Pro 修改默认名称
  3. 素数p阶群乘法循环群啥意思_抽象代数2-3 群元素的阶和循环群
  4. 使用TortoiseSVN新建及合并分支图文教程
  5. C#中线程的使用[Thread in C#]
  6. mysql引擎总结_MySQL存储引擎对比总结
  7. LuoguP1113 杂务
  8. C++获取CPU信息应用经验分享
  9. 【OpenCV】直方图
  10. 【汇编】addr dw number number dw Y的意思:在ADDR单元中存放着数Y的地址
  11. CentOS5.4安装libpng提示--configure: error: ZLib not installed
  12. Jquery中val、text、html的区别
  13. 信息的哲学--从信息到数据存储,再到数据保护
  14. 介绍一个被称为十一边形战士的强大模型
  15. H桥电机驱动基本原理
  16. Wilcoxon符合秩和检验
  17. Django重置管理后台模板
  18. 8g u盘容量变小格式化u盘内存变小--已解决
  19. opc ua与opc da区别_OPC,OPCDA,OPCUA
  20. android 话费充值代码,调用手机话费充值API的SDK编写思路

热门文章

  1. 解决IE8不支持数组的indexOf方法
  2. (摘)如何配置Windows Live Writer
  3. [Usaco2015 dec]Breed Counting
  4. 利用正则按固定长度分割字符串
  5. [Usaco2006 Nov] Fence Repair 切割木板
  6. CVE-2012-4792Microsoft Internet Explorer 释放后使用漏洞
  7. 重写render,利用ClientScript,在客户端注册select,回发到服务器,触发服务器端的行选择事件。...
  8. 设置自定义ASP.NET服务器控件TagPrefix的几种方法
  9. js 中的 __proto__
  10. navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048