java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客
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博客相关推荐
- java部落起源,曾氏起源-mb5ff9820fd69b3的博客-51CTO博客
5000年前,炎黄二帝诞生. 黄帝诞生于姬水河畔(陕西武功漆水河),故以姬为姓. 炎帝诞生于姜水河畔(陕西宝鸡清姜河),故以姜为姓. 在涿鹿之战中,黄帝击败了炎帝的部落,然后两个部落结盟,合二为一,称 ...
- mysql分组后去重效率_mysql-mb6018ead621887的博客-51CTO博客
目录MySQL讲解一.启动服务 二.MySQL命令之数据库操作 三. MySQL命令之表操作 四.MySQL语法规范 五.DQL语言(主查询) 六.DML语言(对表中的数据操作) 七.DDL语言(表字 ...
- excel二进制移位运算_位运算-秦斌的博客-51CTO博客
1.位运算介绍 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作. 2.位运算符号 Java中的运算符号: & : 按位与 |:按位 ...
- 淘口令解析api接口_淘口令解析-super19911115的博客-51CTO博客
淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...
- mysql启动了但是找不到PID_mysql初始化后找不到pid 不能启动-bbotte的博客-51CTO博客...
虚拟机centos 6.4 64位安装的mysql 5.5.37, 修改了my.cnf配置 [root@localhost etc]# service mysqld start #启动mysql失败 ...
- 51CTO博客——架起我与读者沟通、见面的桥梁[博友话题]
说到我与51CTO的故事,相信比较早期加入51CTO的博友都可能了解一些,因为我也在早期的好几篇博文中都专门的介绍.总体来说,我与51CTO博客之间的小故事.大故事还很多,因为我与51CTO的合作比较 ...
- 【JAVA基础】java基础之-泛型详解
写在前面的话 脑子是个好东西,可惜的是一直没有搞懂脑子的内存删除机制是什么,所以啊,入行多年,零零散散的文章看了无数,却总是学习了很多也忘了很多. 痛定思痛的我决定从今天开始系统的梳理下知识架构,记录 ...
- java 泛型 t_Kotlin(2) 泛型与集合
前言 以一个java老鸟的角度,如何去看 kotlin.Java源代码应该如何用Kotlin重构.如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难点: ...
- Java基础篇:泛型与类型擦除
一.什么是泛型: 泛型的本质是 参数化类型,也就是说 将所操作的数据类型 指定为一个参数,在不创建新类的情况下,通过参数来指定所要操作的具体类型(类似于方法中的变量参数,此时类型也定义成参数形式),也 ...
最新文章
- PHP IPC函数介绍---共享内存
- 数据结构 图的广度优先遍历 C++
- 阿里云 Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid password
- 2-29 while
- 让Double类型完整显示,不用科学计数法显示E(Java)
- 怎么把一个控件放到tab页面上去?_移动端页面内容切换
- 无法打开此修补程序包”或“这个产品的安装来源无法使用”解决(转)
- 织梦dedecms响应式自媒体图片新闻资讯网站模板
- php中is null,php中empty(), is_null(), isset()函数区别
- 【Ubuntu引导】EFI系统分区.删除不掉,也不能格式化,如何粘力删除 efi 隐藏分区
- LabView学习笔记(二):滤波器实验
- ArcEngine中拓扑的使用
- 2014年物联网Internet of Things应用简介
- 万达酒店及度假村旗下“万达颐华”品牌第一家直营酒店正式开业
- R语言学习笔记5_参数的假设检验
- w ndows安装,Win7旗舰版Wndows Virtual PC虚拟机安装教程.doc
- excel如何拆分表格?
- 怎样传Arraylist到jsp,且jsp怎样接收并输出
- Android GPRS上网过程中数据图标的变化过程
- 最佳下载酷壁纸的网站