Java泛型

泛型类

即把不确定的数据元素类型用一个泛型占位符表示@Data

public class Person {

private T name;

private T address;

}Person person= new Person<>();

person.setName("attack204");

System.out.println(person.getName());

多类型泛型

即需要传递多个类型占位符,一个常见的应用是map@Data

public class MyMap {

private K key;

private V value;

public void setKeyAndValue(K key, V value) {

this.key = key;

this.value = value;

}

}MyMap myMap = new MyMap<>();

myMap.setKeyAndValue("attack204", 2333);

System.out.println(myMap.getKey());

System.out.println(myMap.getValue());

普通方法泛型@Data

public class Person {

private T name;

private T address;

//以下两种方法都可以

public String show(T inputName) {

return inputName + "is showing";

}

public  String show2(E input) {

return input + "is showing two";

}

}Person person = new Person<>();

System.out.println(person.show("attack204"));

System.out.println(person.show2("attack203"));

静态方法泛型@Data

public class Person {

private T name;

private T address;

//注意,静态方法只能调用静态变量,T不是静态变量

//因此不能写成 public static String show(T inputName) {

public static  String show(E inputName) {

return inputName + "is showing";

}

}System.out.println(Person.show("attack204"));

泛型接口

和上面差不多一样interfacepublic interface PersonInt {

public String show(T name);

}implementpublic class PersonImpl implements PersonInt {

@Override

public String show(String name) {

return name + "is showing three";

}

}

或者public class PersonImpl implements PersonInt {

@Override

public String show(T name) {

return name + "is showing three";

}

}mainPersonImpl person = new PersonImpl();

System.out.println(person.show("attack204"));

或者PersonImpl person = new PersonImpl<>();

System.out.println(person.show("attack204"))

擦除模式定义:java中的泛型只存在于编译阶段,在反射阶段会被擦除。

考虑这样一段代码Person p = new Person<>();

Person p1 = new Person<>();

system.out.println(p == p1);

//true目的:为了兼容低版本的jdk

通配符

在泛型中不识别父子继承关系(具体见视频)

因此需要通配符>来解决此错误

上边界与下边界

用了>相当于此处可以是任意类型,但是有时候需要对其进行限定

extends T>表示只能传入T及其子类,需要读取,但不写入时使用

super T> 表示只能传入T及其父类,需要写入,但不读取时使用

java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客相关推荐

  1. java部落起源,曾氏起源-mb5ff9820fd69b3的博客-51CTO博客

    5000年前,炎黄二帝诞生. 黄帝诞生于姬水河畔(陕西武功漆水河),故以姬为姓. 炎帝诞生于姜水河畔(陕西宝鸡清姜河),故以姜为姓. 在涿鹿之战中,黄帝击败了炎帝的部落,然后两个部落结盟,合二为一,称 ...

  2. mysql分组后去重效率_mysql-mb6018ead621887的博客-51CTO博客

    目录MySQL讲解一.启动服务 二.MySQL命令之数据库操作 三. MySQL命令之表操作 四.MySQL语法规范 五.DQL语言(主查询) 六.DML语言(对表中的数据操作) 七.DDL语言(表字 ...

  3. excel二进制移位运算_位运算-秦斌的博客-51CTO博客

    1.位运算介绍 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作. 2.位运算符号 Java中的运算符号: & : 按位与 |:按位 ...

  4. 淘口令解析api接口_淘口令解析-super19911115的博客-51CTO博客

    淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...

  5. mysql启动了但是找不到PID_mysql初始化后找不到pid 不能启动-bbotte的博客-51CTO博客...

    虚拟机centos 6.4 64位安装的mysql 5.5.37, 修改了my.cnf配置 [root@localhost etc]# service mysqld start  #启动mysql失败 ...

  6. 51CTO博客——架起我与读者沟通、见面的桥梁[博友话题]

    说到我与51CTO的故事,相信比较早期加入51CTO的博友都可能了解一些,因为我也在早期的好几篇博文中都专门的介绍.总体来说,我与51CTO博客之间的小故事.大故事还很多,因为我与51CTO的合作比较 ...

  7. 【JAVA基础】java基础之-泛型详解

    写在前面的话 脑子是个好东西,可惜的是一直没有搞懂脑子的内存删除机制是什么,所以啊,入行多年,零零散散的文章看了无数,却总是学习了很多也忘了很多. 痛定思痛的我决定从今天开始系统的梳理下知识架构,记录 ...

  8. java 泛型 t_Kotlin(2) 泛型与集合

    前言 以一个java老鸟的角度,如何去看 kotlin.Java源代码应该如何用Kotlin重构.如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难点: ...

  9. Java基础篇:泛型与类型擦除

    一.什么是泛型: 泛型的本质是 参数化类型,也就是说 将所操作的数据类型 指定为一个参数,在不创建新类的情况下,通过参数来指定所要操作的具体类型(类似于方法中的变量参数,此时类型也定义成参数形式),也 ...

最新文章

  1. PHP IPC函数介绍---共享内存
  2. 数据结构 图的广度优先遍历 C++
  3. 阿里云 Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid password
  4. 2-29 while
  5. 让Double类型完整显示,不用科学计数法显示E(Java)
  6. 怎么把一个控件放到tab页面上去?_移动端页面内容切换
  7. 无法打开此修补程序包”或“这个产品的安装来源无法使用”解决(转)
  8. 织梦dedecms响应式自媒体图片新闻资讯网站模板
  9. php中is null,php中empty(), is_null(), isset()函数区别
  10. 【Ubuntu引导】EFI系统分区.删除不掉,也不能格式化,如何粘力删除 efi 隐藏分区
  11. LabView学习笔记(二):滤波器实验
  12. ArcEngine中拓扑的使用
  13. 2014年物联网Internet of Things应用简介
  14. 万达酒店及度假村旗下“万达颐华”品牌第一家直营酒店正式开业
  15. R语言学习笔记5_参数的假设检验
  16. w ndows安装,Win7旗舰版Wndows Virtual PC虚拟机安装教程.doc
  17. excel如何拆分表格?
  18. 怎样传Arraylist到jsp,且jsp怎样接收并输出
  19. Android GPRS上网过程中数据图标的变化过程
  20. 最佳下载酷壁纸的网站

热门文章

  1. 德国最受欢迎的程序员技能排行
  2. 寻找一个字符串的重复子串 后缀数组
  3. jquery过滤HTML标签方法
  4. HarmonyOS系统概述
  5. FPGA与ASIC:它们之间的区别以及使用哪一种?
  6. OpenCV读写图像文件解析
  7. Linux环境变量说明与配置
  8. gitflow分支管理模型
  9. 你哪来这么多事(六):职工信息查找
  10. Adnroid文件存储路径getFilesDir()与getExternalFilesDir的区别