T    ?    K    V    E

?——表示不确定的Java类型
T——表示Java类型
K、V——分别代表键-值中的Key-Value,例如Map<K,V>,put(K key, V value)
E——代表Element,例如List<E>,add(E e)

java.lang.Class

Class类的实例,描述的是Java应用在JVM中的普通类(class 和 enum)或接口(interface 和annotion)。换句话说,每个java类运行时都在JVM中表现为一个Class对象。
Class对象获取:
第一种方式: 对象.getClass()

Student sdt = new Student();
Class<?> sdtClz = sdt.getClass();

第二种方式: 类名.class

Class<?> sdtClz2 = Student.class;

第三种方式:静态方法Class.forName("完整类名")

Class<?> sdtClz3 = Class.forName("thinging.in.java.Student");

说明:关于Class对象的用处,像forName()和newInstance()都是比较常见的,其他方法请参考Class类源码

数组同样也被映射为Class对象的一个类,根据数组元素类型和维数的不同,具有相同的数组元素类型与维数的数组会共享同一个Class对象。另外,八大基本型和关键字void同样表现为Class对象。

Class<T> 、Class<?> 、T

Class<?>是通配泛型,?代表任何类型,也可以(取巧地)理解为Object类型(也就是说Class<?>与Class<Object>是等价的)。因此,Object类型的Class对象,在newInstance的时候当然也是返回一个Object对象,如果我们需要具体的某一个类的对象,当然需要强转。
但是,Class<T>在实例化的时候,T要替换成具体类。也就是类似于Class<Student>、Class<Square>这类形式,这种方式,我们在使用Class对象的时候对Class对象进行了类型约束,因此,在使用Class对象进行实例化的时候(Class.newInstance())就不需要进行强制转化成我们需要的类型,因为<T>已经帮我们进行了类型的约束。
T 同样表示某一个具体类型,我们定义一个泛型方法如下:

public static <T> String getSomething(T bean){return "something";
}

当我们调用这个getSomething方法的时候,允许程序员传入任何类型的对象,但是参数的类型T只是在传值时可以任意选择,但是一旦传入了某个具体类型的bean,那么运行时的T便已经确定。另外,参数类型需要写在返回值前面并用<>括起来。

受限通配、下限通配

<? extends T> 代表受限通配,表示T类型的子类;
<? super T> 代表下限通配,表示T类型的一个未知父类。

Java泛型初探————泛型通配相关推荐

  1. 不正确 有三种形式 说法 通配泛型_一看就懂 详解JAVA泛型通配符T,E,K,V区别...

    1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛 ...

  2. Java:高级之泛型概念引入,泛型可以设置多个类型参数,泛型继承和泛型接口实现,限制泛型可用类型,泛型通配的方式,泛型方法,泛型方法限制泛型可用类型

    目录页         泛型简介         泛型类         限制泛型可用类型         类型通配声明         泛型方法 问题引入 如果我们需要产生多个对象,每个对象的逻辑完 ...

  3. Java笔记14:泛型初探

    一.泛型简介 泛型是从Java SE 1.5开始出现的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛 ...

  4. java 高级泛型_java泛型的高级应用

    展开全部 在上面的例子中,由于没有限制class GenericsFoo类型持有者T的范围,实际上这里32313133353236313431303231363533e59b9ee7ad9431333 ...

  5. r java 泛型_Java 泛型

    规则和限制 1.泛型的类型参数只能是类类型(包括自定义类),不能是简单类型. 2.同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的. 3.泛型的类型参数可以有多个. ...

  6. Java集合、泛型 面试题

    1.ArrayList和linkedList的区别 Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的. Array获取数据的时间复杂度是O(1),但是要删 ...

  7. Java中的泛型 --- Java 编程思想

    前言 ​ 我一直都认为泛型是程序语言设计中一个非常基础,重要的概念,Java 中的泛型到底是怎么样的,为什么会有泛型,泛型怎么发展出来的.通透理解泛型是学好基础里面中非常重要的.于是,我对<Ja ...

  8. java 高级泛型_Java 泛型高级

    1.限制泛型可用类型 在定义泛型类别时,预设可以使用任何的类型来实例化泛型中的类型,但是如果想要限制使用泛型的类别时,只能用某个特定类型或者其子类型才能实例化该类型时,使用extends关键字指定这个 ...

  9. Java中创建泛型数组

    Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...

最新文章

  1. numpy list df tensor的相互转换
  2. python画图哆啦a梦-【Python】绘制哆啦A梦
  3. NYOJ 214 单调递增子序列(二)
  4. Django13-ModelForm中的is_valid及局部钩子、全局钩子源码解析
  5. HTML 中的字符实体集
  6. 《C++ Primer 5th》笔记(6 / 19):函数
  7. Apache FtpServer配置步骤总结
  8. C++ 读取文件操作
  9. 单片机汇编语言编程_单片机编程用C语言还是汇编?
  10. 刷新按钮_处理数据透视表的隐藏选项(四):固定报表刷新前后的列宽和格式...
  11. 安装cx_Oracle 遇到的杂项问题
  12. API拦截的应用,网址劫持
  13. 多元统计分析基于r课后答案_多元统计分析课后练习答案与解析
  14. GNSS说第(七)讲---自适应动态导航定位(七)---抗差估计理论介绍
  15. 程序员做饭指南-蒸(米)/炖(使用电饭煲/高压锅/电压力锅)
  16. android虚拟内置sd卡,安卓虚拟器bluestacks虚拟sd卡打开方法【图解】
  17. 手机里tencent文件夹能删吗_手机上的文件夹能不能删?看完之后秒懂
  18. 量子计算机叠加算法,量子计算中的叠加
  19. html中右侧三角形代码,纯CSS绘制三角形(各种角度)
  20. 由一道bash jail题引出的琐事@_@

热门文章

  1. java settime_Java日历setTime()方法及示例
  2. csapp bufbomb实验
  3. macos下使用aria2_macOS下 ansible简单安装及基础使用
  4. php 屏蔽ctrl c,ctrl+c用不了怎么回事
  5. 怎么把4399小游戏的代码_25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在...
  6. rootfs 制作ubuntu_Ubuntu12笔记: 基于busybox的Linux小系统制作
  7. idea代码补全声明代码_用了这么多年idea,竟然不知道这些代码补全功能
  8. python 描述_python描述符
  9. 电脑手写输入法_百度输入法“手写输入”为什么不是老年人的专利?AI的进步...
  10. python运动目标检测与跟踪_基于OpenCV的运动目标检测与跟踪