当前位置: 首页 > news >正文

【Java 第六篇章】泛型

一、简介

Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

二、泛型的优点

能够更好的限制类型,避免类型转换的错误。可以把运行时的异常提前到编译期。

三、泛型类的定义

泛型的本质就是类型参数化,定义的泛型参数就是类型,当然这个类型定义的时候还不知道具体是什么类型,只有在类创建对象或者调用方法的时候才知道。

四、泛型方法

泛型方法的泛型是加在返回值类型的前面。

五、泛型通配符

泛型通配符不是用在定义对象上,是用在方法的型参上。使用泛型通配符是因为集合没有协变。

六、语法

    //泛型的格式<数据类型> 数据类型:只能是引用数据类型//使用格式数据类型<泛型的类型> 对象 = new 数据类型<泛型的类型>();//注意:只在等式右边加没有效果。相当于没有加。

七、案例

    //泛型类//GeneiricType 泛型类package com.tsing.extend.demo7;/*** * @author dongli** @param <T> 型参* @param <E> 型参*/public class GeneiricType<T> {T t;public T getT() {return t;}public void setT(T t) {this.t = t;}}//测试类package com.tsing.extend.demo7;public class Demo {public static void main(String[] args) {GeneiricType<String> g = new GeneiricType<String>();g.setT("test");System.out.println(g.getT());}}//泛型接口//接口定义:package com.tsing.extend.demo7;public interface GeneiricInterface<T, E> {void method(T t);}//接口实现类1package com.tsing.extend.demo7;public class GeneiricInterfaceImpl<T, E> implements GeneiricInterface<T, E> {@Overridepublic void method(T t) {System.out.println(t);}}//接口实现类2package com.tsing.extend.demo7;public class GeneiricInterfaceImpl implements GeneiricInterface<String, String> {@Overridepublic void method(String t) {System.out.println(t);}}//范型方法://GenericMethodpackage com.tsing.extend.demo7;public class GenericMethod {public <T, E> void method(T t) {System.out.println(t);}}//测试类package com.tsing.extend.demo7;public class Demo {public static void main(String[] args) {GenericMethod g = new GenericMethod();g.method(1);}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 聚鼎科技:装饰画怎么做盈利更快
  • C# 实现改造 GooFlow 流程图插件与数据库应用的结合
  • Linux系统性能调优实战:从基础到进阶的全方位指南
  • 【C++修炼之路 第七章】模拟实现 list 类模板
  • redis面试(四)ZSet数据结构
  • JavaScript输出数据的方法?
  • uniApp跳转外链
  • 密码学基础-数据加密
  • 【学术会议征稿】第八届力学、数学与应用物理学国际会议(ICMMAP 2024)
  • mysql 各种锁归纳总结
  • FLOW MATCHING FOR GENERATIVE MODELING 阅读笔记
  • C++ primer plus 第17 章 输入、输出和文件:用cout进行格式化
  • Hibernate Validator 数据校验框架
  • 【从零开始一步步学习VSOA开发】创建VSOA的client端
  • poetry配置镜像
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【391天】每日项目总结系列128(2018.03.03)
  • Angular 2 DI - IoC DI - 1
  • crontab执行失败的多种原因
  • Python 反序列化安全问题(二)
  • redis学习笔记(三):列表、集合、有序集合
  • Swoft 源码剖析 - 代码自动更新机制
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 通过git安装npm私有模块
  • 微信小程序开发问题汇总
  • 微信小程序--------语音识别(前端自己也能玩)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​Python 3 新特性:类型注解
  • ​数据链路层——流量控制可靠传输机制 ​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • (3)(3.5) 遥测无线电区域条例
  • (9)STL算法之逆转旋转
  • (C#)获取字符编码的类
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (八)c52学习之旅-中断实验
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (一)、python程序--模拟电脑鼠走迷宫
  • .bat批处理出现中文乱码的情况
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net Web项目创建比较不错的参考文章
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .sh 的运行
  • @Autowired和@Resource的区别
  • [17]JAVAEE-HTTP协议
  • [2016.7 day.5] T2
  • [android学习笔记]学习jni编程
  • [Armbian] 部署Docker版Home Assistent,安装HACS并连接米家设备
  • [BJDCTF2020]EzPHP1