先看下如下代码:

import java.util.*;

class Fruit { public String toString() { return “Fruit”; } }

class Apple extends Fruit { public String toString(){ return “Apple”; } }

class Person { public String toString(){ return “Person”; } }

class ClassName {//主类,把你文件名改成ClassName.java

 void show_1(T t){System.out.println("show_1  "+ t.toString());
}<E> void show_2(E e){System.out.println("show_2  "+e.toString());
}<T> void show_3(T t){System.out.println("show_3  "+t.toString());
}public static void main(String[] args) {ClassName<Fruit> o = new ClassName<Fruit>();Fruit f = new Fruit();Apple a = new Apple();Person p = new Person();System.out.println("show_1 演示________________________");o.show_1( f );o.show_1( a );

// o.show_1( p ); 楼主把这行代码去掉注释看一下,是不能编译通过的。因为在
// ClassName中已经限定了全局的T为Fruit,所以不能再加入Person;
System.out.println(“show_2 演示________________________”);
o.show_2( f );
o.show_2( a );
o.show_2( p );
System.out.println(“show_3 演示________________________”);
o.show_3( f );
o.show_3( a );
o.show_3( p );

}

}

程序输出:
show_1 演示________________________
show_1 Fruit
show_1 Apple
show_2 演示________________________
show_2 Fruit
show_2 Apple
show_2 Person
show_3 演示________________________
show_3 Fruit
show_3 Apple
show_3 Person

/* 而show_2 和show_3方法其实是完完全全等效的。意思就是说ClassName中一旦
T被指定为Fruit后那么show_1没有前缀 的话,该方法中只能是show_1 (Fruit对象)

而你要是有前缀或的话,那么你就是告诉编译器对它说:这是我新指定的一个类型,
跟ClassName类对象中的T没有半毛钱的关系。也就是说这个show_3中的T和show_2中的
E是一个效果,也就是你可以把show_3同等程度地理解为 void show_3(E e){~~~~~}

从上面我说的看,那就是 这个方法返回值前也加个的话,这个T就代表该方法自己独有的某个类,而不去和类中限定的T产生冲突,你直接换成会更容易理解的。*/

泛型里面的<T> List<T>前面的<T>代表是什么意思?为什么要加<T>?相关推荐

  1. .NET 泛型,详细介绍

    今天的文章是因为再给一个朋友讲这个的时候随手记录下整理出来的.说白了就是把前辈们曾经给我吹过的我又吹了出去. 泛型:是C# FrameWork 2.0 时代 加入进来的,可以说对与Net开发人员来说泛 ...

  2. Go 语言泛型,简明入门教程

    阅读本文大概需要 10 分钟. 大家好,我是 polarisxu. 有泛型的 Go 版本 1.18 已经发布了 Beta1 版本,之前陆陆续续介绍了泛型,但可能有些人还是对 Go 泛型没有完整的了解, ...

  3. Java基础视频笔记(四):泛型

    今天学习了泛型的相关知识,笔记记录如下,与大家分享: 泛型:JDK 1.5 之后增加的新功能,最初Java是把C++中的泛型摒弃掉的,后来由于很多开发者提议要使用,后来又加回来了~ 泛型,可以解决数据 ...

  4. Java基础----泛型

    一,泛型机制介绍及为何要使用泛型 泛型机制是在Java SE5.0中增加的,使用泛型机制编写的程序代码要比那些杂乱地使用object变量,然后再进行强制转换的代码具有更好的安全性和可读性.泛型对于集合 ...

  5. 泛型(泛型类、泛型方法)

    泛型 泛型指的就是一种类型,泛型一般都跟<>使用,例如< String>,就代表这是String类型的,一般联合集合使用List< Student>代表Studen ...

  6. Java 泛型的本质——类型擦除

    文章目录 简介 Java泛型的类型擦除的证明例子 类型擦除到边界 擦除的代价与使命 使用泛型不是强制的 泛型代码边界的动作 非泛型类库和泛型类库:字节码一模一样 擦除的补偿 泛型与工厂模式 泛型数组 ...

  7. 【Java数据结构】泛型详解+图文,通配符上界、下界

    0. 泛型的本质 0. 泛型的目的 1. 泛型的语法 1.1 泛型的使用 2. 包装类 2.1 装箱和拆箱 2.2.1练习题 3 .泛型如何编译 4.泛型的上界 5. 通配符 5.1通配符上界 5.2 ...

  8. 泛型会让你的 Go 代码运行变慢

    以下内容来自公众号逆锋起笔,关注每日干货及时送达 作者 | Vicent Marti 译者 | 核子可乐 策划 | 褚杏娟 Go 1.18 已经到来,很多人期盼已久的首个支持泛型实现的版本也就此落地. ...

  9. 孤独的守望者 -- 泛型

    一:概述 为什么给这篇文章起名为孤独的守望者,说不上来,但是如果深入了解过Java中的泛型对这个标题都会有所感触.编译时存在作为类型安全检查,运行时被擦除回归本质,有没有那么一点感觉??不扯淡了,本文 ...

  10. Java中级部分内容笔记 异常 I/O 集合框架 泛型 Lambda

    Java中级学习过程 参考的是所长的Java中级内容 1异常处理 1.1异常的定义 在我们打开文件的过程中,文件可能存在且被打开,也有可能不存在.在此时,Java会自动抛出一个异常,让我们必须去处理两 ...

最新文章

  1. 线程安全问题产生的原因
  2. 对象的引用和clone
  3. Android性能优化典范 - 第6季
  4. 区块链BaaS云服务(39)时戳信息Bystack“架构设计”
  5. MariaDB [Warning] Could not increase number of max_open_files to more than 1024
  6. PHP 实现归并排序算法
  7. springcloud config服务端配置(二)
  8. 第七章:在Spark集群上使用文件中的数据加载成为graph并进行操作(2)
  9. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫——并查集(思路!)
  10. python3 3种方式分别用for循环、while循环计算1到100的和
  11. 2020下半年软件设计师上午真题(参考答案)
  12. java实现word文档形式导出(含多级表头)
  13. java 闰年闰月_闰年闰月查询表
  14. 地理学中的经典统计分析方法
  15. c语言函数写巴德歌赫猜想,高三励志演讲稿范文
  16. 男士不得不看的21种经典拍照姿势
  17. java jvm sdk_JDK、SDK、JRE、JVM概念详解
  18. MLY -- 7.How large do the dev/test sets need to be?
  19. 一文读懂babel的使用
  20. 驱动学习(十)poll机制

热门文章

  1. 最强之dos命令 - for
  2. 腾讯wegame版怪物猎人世界被下架 这个锅或许还得腾讯自己来背!
  3. element 日期选择器设置默认事件且限制结束大于开始日期
  4. YOLOv5火焰烟雾检测
  5. css常见效果——信封效果
  6. 怎么将照片的kb变小?2种快捷方法你知道吗
  7. inskeep:用AI打造ins存图新时代
  8. java p2p文件传输_基于java的p2p实现文件共享和传输
  9. 基于Qt实现的自定义简易Lua脚本编辑器
  10. MongoDB查询命令