JavaSE-17 泛型
学习要点
- 泛型接口
- 泛型类
- 泛型方法
- 多参数泛型类
- 泛型类的继承
泛型的定义
允许在定义类、接口、方法时使用类型形参,类型形参将会在声明变量、创建对象或者调用方法时候动态指定。
泛型接口
1 定义
泛型接口就是拥有一个或多个类型参数的接口
2 语法
public interface 接口名<类型形参> { 类型形参 方法名(类型形参 类型形参实例); }
3 代码示例
/** 泛型接口 */ public interface IGeneric<T> { public T getName(); // T类型由外部决定 public void setName(T t);// 方法参数类型有外部决定 }
泛型类
1 定义
泛型类就是具有一个或者多个类型参数的类。
2 语法
public class 类名<类型形参> { 方法名(类型形参 类型形参实例) { 方法执行体 } }
3 示例代码
/** 泛型类 */ public class Person<T> implements IGeneric<T> {// 实现泛型接口 private T t; public Person(T t) { this.setName(t); } @Override public T getName() { return this.t; } @Override public void setName(T t) { this.t = t; } } /** 测试类 */ public class Test { public static void main(String[] args) { IGeneric<String> p = new Person<String>("张三"); System.out.println(p.getName()); } }
泛型方法
1 定义
泛型方法就是带有类型参数的方法。
泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。方法中的类型参数作用范围只在方法中。
2 语法
修饰符<类型形参> 返回值 方法名(不指定|类型形参|正常参数,……) { 方法体 }
3 示例代码
/**泛型方法:判断数据类型*/ public class ObjectTypeJudge { public <T> void judgeMethod(T t){ System.out.println("数据类型是:"+t.getClass());//获取类定义信息 } } /** 测试类 */ public class Test { public static void main(String[] args) { ObjectTypeJudge otj=new ObjectTypeJudge(); otj.judgeMethod(100); otj.judgeMethod("hello"); otj.judgeMethod(123.4f); otj.judgeMethod(321.23); } }
4 测试结果
上机练习
需求描述
- 定义泛型接口并添加获取字段方法,将类型参数做为此方法返回类型。
- 定义泛型类实现上述泛型接口,添加一个字段并将类型参数作为字段的类型,在构造函数中初始化此字段。
- 在main()方法中实例化泛型接口,调用获取字段方法并打印。
多参数泛型类
1 语法
例如Map常用的实现类:HashMap<K,V>属于多个参数的泛型类。
2 示例代码
/**多参数泛型类*/ public class GenericMulPara<T, V> { private T a; private V b; public GenericMulPara(T a, V b) { this.a = a; this.b = b; } public void showType() { System.out.println("a的类型是" + a.getClass().getName()); System.out.println("b的类型是" + b.getClass().getName()); } }
泛型类的继承
1 定义
- 面向对象的特性同样适用于泛型类,所以泛型类也可以被继承。
- 继承了泛型类的子类,必须也是泛型类。
2 语法
class 子类<T> extends 父类<T> { }
JavaSE-17 泛型的更多相关文章
- 【JavaSE】泛型
Java泛型 2019-07-05 22:00:24 by冲冲 1. 泛型的引例 1 List list = new ArrayList(); 2 list.add(1022); //向集合中添加 ...
- JavaSE笔记-泛型
定义带泛型的类 public class Cat<T> { //可以用T定义实例变量 private T name; //可以用T定义形参 //构造器没有<> public C ...
- 17.泛型.md
目录 1.Generic概念 2.泛型类 2.1定义泛型类 定义泛型: 注意要点 2.2泛型类的继承 2.3类型通配符 2.4设置类型形参上下限 上限 下限 2.5泛型接口 定义方法 注意要点 3.泛 ...
- JavaSE基础:泛型
泛型 1.引入 情景模式描述,假设完成一个学生的成绩的情况: 整数: math=80,english=70 小数: math=85.6,englisth=77.8 字符串: math="66 ...
- JavaSE学习总结第16天_集合框架2
16.01 ArrayList存储字符串并遍历 ArrayList类概述:底层数据结构是数组,查询快,增删慢,线程不安全,效率高 ArrayList类是List 接口的大小可变数组的实现.实现了所 ...
- Java 集合、Iterator迭代器、泛型等
01集合使用的回顾 A:集合使用的回顾 a.ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayList<I ...
- 18_集合框架_第18天_集合、Iterator迭代器、增强for循环 、泛型_讲义
今日内容介绍 1.集合 2.Iterator迭代器 3.增强for循环 4.泛型 01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public stati ...
- Java 17 新功能介绍(LTS)
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Jav ...
- scala面向对象.高阶函数,柯里化,Actor编程简介
1.定义一个类 class Person{ //用val修饰的变量是只读属性,有getter但是没有setter val id ="111" //用var修饰的变量既有getter ...
- 18_java之集合Collection
01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayList< ...
随机推荐
- BZOJ_1670_[Usaco2006 Oct]Building the Moat护城河的挖掘_求凸包
BZOJ_1670_[Usaco2006 Oct]Building the Moat护城河的挖掘_求凸包 Description 为了防止口渴的食蚁兽进入他的农场,Farmer John决定在他的农场 ...
- Are you sure you want to continue connecting etc ssh ssh_config StrictHostKeyChecking no
Are you sure you want to continue connecting (yes/no) 每次ssh 进入一台新机器都会跳出如下的提示: The authenticity of ho ...
- 视图模板中 使用boottstrap 将各表单字段排成一行
如果需要创建一个表单,它的所有元素是内联的,向左对齐的,标签是并排的,请向 <form> 标签添加 class .form-inline. <form class="for ...
- logback 使用详解 (转)
详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 常用配置详解(序)logback 简介 logback 常用配置详解(一)<c ...
- PHP中的连贯操作
连贯操作有什么好处?就是多行操作可以在一行之内完成,要进行连贯操作的方法必须返回$this,也就是当前类的对象实例,然后就可以进行连贯操作了,具体的实现代码如下所示. <?php /** * p ...
- Git学习三
一.准备Github远程仓库 1.github官网注册账户 2.ubuntu端创建SSH Key $ssh-keygen -t rsa -C "youremail@example.com&q ...
- Linux 常用命令八 find
一.find命令 find命令用于查找文件. 按文件名字查找: wang@wang:~/workpalce/python$ sudo find / -name "create.txt&quo ...
- 洛谷 P3625 [APIO2009]采油区域【枚举】
参考:https://blog.csdn.net/FAreStorm/article/details/49200383 没有技术含量但是难想难写,枚举情况图详见参考blog懒得画了 bzoj蜜汁TTT ...
- bzoj 2111: [ZJOI2010]Perm 排列计数【树形dp+lucas】
是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形dp 设f[i]为i点的方案数,si[i]为i点的子树大小,递推式是\( f[i]=f[i*2]*f[i*2+1]*C_{si[i]-1} ...
- (6)css盒子模型(基础下)
一.理解多个盒子模型之间的相互关系 现在大部分的网页都是很复杂的,原因是一个“给人用的”网页中是可能存在着大量的盒子,并且它们以各种关系相互影响着. html与DOM的关系 详情了解“DOM” :ht ...