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_3620_似乎在梦中见过的样子_KMP
BZOJ_3620_似乎在梦中见过的样子_KMP Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka ...
- 2018OKR年中回顾 转
一.2018OKR规划 目标1.温习专业基础知识 关键结果1.1 阅读<微积分之屠龙宝刀>+<微积分之倚天宝剑>,加深理解高等数学微积分的各种概念与公式(0.2 屠龙宝刀看了三 ...
- bzoj3389
3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 367 Solved: ...
- sql server 变量 字符串拼接
参考:SQL server中null+字符串,isnull以及把查询结果赋给一个字符变量组成另一个查询语句 1.开始定义的字符串都为null.例如:declare @sql,那么@sql就是null ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(三)密码修改以及密码重置
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/as ...
- Ruby Encoding类
Encoding类 内部编码 IO对象内部处理时候的编码 外部编码 IO对象对外输出的时候的编码 输入 外部字符与自己的外部编码对比(没设定的默认 ...
- bzoj 1096: [ZJOI2007]仓库建设【斜率优化】
好眼熟啊 直接dp显然很难算,所以设val为只在n点建一个仓库的费用,然后设f[i]为在i~n点建若干仓库并且i点一定建一个仓库的最大省钱数 转移很显然,设s为p的前缀和,f[i]=max{f[j]+ ...
- 洛谷 P2617 Dynamic Rankings || ZOJ - 2112
写的让人看不懂,仅留作笔记 静态主席树,相当于前缀和套(可持久化方法构建的)值域线段树. 建树方法:记录前缀和的各位置的线段树的root.先建一个"第0棵线段树",是完整的(不需要 ...
- 前缀+排序 HDOJ 4311 Meeting point-1
题目传送门 题意:给一些坐标轴上的点,选一个点,使得其他点到该点曼哈顿距离和最小 分析:这题有很强的技巧性,直接计算每个点的曼哈顿距离和是不可行的.这里用到了前缀的思想,先对点按照x从左到右排序,p[ ...
- Latex排版工具的使用(一) 分类: Latex 2014-06-14 22:52 448人阅读 评论(0) 收藏
使用Latex可以排版出漂亮的论文,尤其适合对含有数学公式论文的排版. 下面编写第一Latex源文件,实现对两个数学公式的排版: 新建文件first.tex: \documentclass{artic ...