本文转载自https://blog.csdn.net/cris001cris/article/details/53712189

T表示泛型,new的时候要加入泛型,更方便通用
? 表示不确定的类型,一般用在通配
Object表示java中所有类的父类,在集合中使用时要格外注意。
jdk为了便于理解,用K表示键,V表示值,T表示type类型,E表示enum枚举,其实这四个都只是符号,都是表示泛型名称。换成其他字母都没关系,但是都要在之前声明。

下面介绍一个例子:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;//虽然Test<T1,T2>,但类名字仍为Test。T1,T2只是告诉我们new的时候要加入泛型,更方便通用
//T1,T2可以任意定义,比如改成K,V都可以
//他们不会关联到其他类,只是在本类中通用
public class Test<T1, T2> {public static void main(String[] args) {System.out.println(new Test().getT1());System.out.println(new Test().getT2());new Test<String, String>().getClassName("");//T1,T2在new的时候用到,这里都为Stringnew Test().getClassAndList(Integer.class);//HashMap的括号里面不能是T,E,T1,T2等不确定的东西,但可以是?HashMap<?, ?> map = new HashMap<Object, String>();List<?> list = new ArrayList<String>();}public T1 getT1() {//这里的“T1”替换成1或1.0都会报错return (T1) "T1";}T2 getT2() {//将自动转型为Stringreturn (T2) "T2";}public <T> void getClassName(T x) {//<T>必须放在void或者返回类型的前面System.out.println(x.getClass().getName());}public <T> Class<?> getClassAndList(Class<?> a) {//Class<T>前面缺少<T>必须定义,否则将出现编译错误//T改成其他字母都可以,但一定要声明// 返回类型和参数中的类型:Class<T>和Class<?>都可以。因为返回的a的类型为Class<T>,Class<?>可以通配//当两个都是Class<?>,参数中的?自动通配成TSystem.out.println(a.getClass().getName());//传入的a是一个类,Class类型//参数里面的Class<T>最大的好处是如果方法里面定义了泛型,可以自动获取类型值,比如如下的List<T>可以自动获取到a的类型,不必强调死List<?> aa = new ArrayList<T>();//List<?> aa = new ArrayList<?>();会报错,以为ArrayList必须是一种类型,List<>起到通配的作用//List<T> aa = new ArrayList<T>();当然正确System.out.println(aa);return a;}
}

java泛型:T与?的使用及区别相关推荐

  1. Java泛型中extends和super的区别?

    区别 <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概 ...

  2. java泛型中?和T有什么区别?

    2019独角兽企业重金招聘Python工程师标准>>> public static void printColl(ArrayList<?> al){           ...

  3. 【Java】泛型中 extends 和 super 的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

  4. java 泛型 class t_java 泛型中classT 和T的区别是什么?

    public boolean edit(T entity) 和public T get(Class c, Serializable id)中这两种参数的定义和调用有什么区别? public boole ...

  5. [转]JAVA泛型通配符T,E,K,V区别,T以及ClassT,Class?的区别

    原文地址:https://www.jianshu.com/p/95f349258afb 1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被 ...

  6. Java泛型中extends T和super T的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

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

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

  8. (转)JAVA泛型通配符T,E,K,V区别,T以及Class,Class的区别

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

  9. java super extend 区别_Java泛型中extends和super的区别

    extends T>和 super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. extends T&g ...

  10. JAVA泛型通配符T,E,K,V区别,T以及ClassT,ClassT的区别

    原文地址:https://www.jianshu.com/p/95f349258afb 1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被 ...

最新文章

  1. JSon数据查询---Jlinq
  2. JavaScript 把字符串类型转换成日期类型
  3. java的调试工具_[Java教程]chrome调试工具
  4. 面向过程的ado建造者模式
  5. axis2 webservice入门学识(JS,Java,PHP调用实例源码)
  6. 小学音乐教学和计算机的融合,小学学科教学与计算机深度融合赛课心得体会(共4篇)...
  7. 0004-程序流程2之ui-router大意
  8. C# Base64方式的编码与解码
  9. HDU 3651 A Simple Problem
  10. JavaScript 引擎 V8 新机制:JIT-less
  11. Linux父进程如何发信号给子进程,关于C#:fork和signal:如何将信号从父进程发送到特定的子进程...
  12. Hive窗口函数应用:级联累加求和场景
  13. 根据原图和对应的alpha图提取前景并且合成新图(基于python+opencv)
  14. OpenGLCG技术之Render To Texture
  15. simulink电子节气门控制模型发动机电子节气门控制模型,有说明文档,教程。
  16. 北邮大一第二学期计算机学院课表,北京邮电大学
  17. 电子电工技术------电阻元件,电感元件与电容元件
  18. 安卓智能地图开发与实施:三维地图 - ArcGIS Runtime SDK for Android
  19. 基于java的高校运动会管理系统的设计与实现--毕业论文(可仅作参考)
  20. leetcode刷题第21天——1763,117,572

热门文章

  1. 技巧推荐 PDF文件怎么转成word文档
  2. amoeba实现mysql主从读写分离_MySQL+Amoeba实现数据库主从复制和读写分离
  3. 【分治算法-02】算法经典问题
  4. kali linux 初始密码
  5. 加装固态硬盘+安装win10系统
  6. The Byzantine Generals Problem拜占庭将军问题理解
  7. 工欲善其事必先利其器——AWS认证是你最好的磨刀石
  8. 跑跑卡丁车rush服务器维护,跑跑卡丁车Rush+官网版
  9. cf I - Irrational Division
  10. 百度搜索升级冰桶算法5.0