Java中的泛型与异常机制

※泛型的使用
如果在使用集合时没有限定集合所保存的数据类型,则在代码运行期间容易会出现ClassCastException类转换的异常
通过设置泛型,可以在编译期间发生问题。
泛型可以在类、接口、方法中进行定义
※–泛型的作用

(类和接口定义泛型的道理是一样的)
–在类中使用泛型
举例:
快递员送快递的操作,如果是冷链商品则让运算食物的快递员进行运送,否则是默认普通运送员配送

–在接口中使用泛型
举例:
定义飞机的接口,提供两个方法,如果是军用飞机则运送武器,如果是民用客机则运送乘客

※–泛型的通配符
举例:
//1、?代表是所有泛型的父类,也就是一个通配符
//2、可以实现遍历、但是不能添加明确的数据类型、除了null可以

※–泛型通配符的上边界
–泛型继承了某个类型
? extends Class
举例:
定义画布类、画布中有方法可以画出某个多边形,比如有圆形、长方形
–drawAll(List<多边形> list);//遍历多边形的集合,调用多边形的draw()进行画画

多边形(抽象类)
–draw(画布);输出当前多边形的对象

实现步骤
//-1、分别创建画布类、多边形的抽象类、圆形、长方形
//-2、定义多边形的描绘图案的方法,分别在子类圆形和长方形中实现抽象方法
//-3、画布类中定义描绘所有图案的方法、遍历集合、调用描绘方法,入参当前的画布对象
//-4、编写测试代码
//给画布描绘多个图案
//1、创建画布的对象
//2、提供图案的集合 (多个多边形) 圆形图案的集合
//通过调用类的构造器来创建对象,并且初始化成员变量(半径)
//3、通过画布调用描绘所有多边形的方法进行描绘

水果
–补充营养();输出当前水果的补充养分

限定场景,熊只吃浆果类的水果

实现步骤
//-1、分别创建动物类、熊类、水果类、树莓、橡果
//-2、定义水果中的补充营养的方法,分别在子类苹果和橙子中重写方法
//-3、动物类中定义吃水果的方法、遍历水果的集合、调用水果中的补充营养的方法
//-4、编写测试代码
//熊吃浆果类的水果
//1、创建熊的对象
//2、提供浆果类水果的集合 (多个浆果的对象)
//通过调用类的构造器来创建对象,并且初始
//3、通过熊调用吃水果的方法进行补充营养

※–泛型通配符的下边界
–泛型被某个类型所继承(某个类型的父类)
? super Class
要求入参的类型必须为熊类或其父类
? super Bear { Object \ Animal \ Bear}
举例:
定义算术运算类、其中可以定义多个算术运算的操作
比如:
–add(List<数值类型> list);//实现多个数的相加
–subtract(List<数值类型> list);//实现多个数的相减
要求:入参的数值类型必须为Integer的本类或其父类的对象

实现步骤
//-1、分别创建算术运算类MathCountting
//-2、定义add方法,数据相加操作方法
//-3、定义subtract方法、数据相减操作方法
//-4、编写测试代码
//通过算术运算类对某一系列的数值进行运算
//1、创建算术运算类的对象
//2、提供对应类型数值的集合
//3、通过算术运算的方法进行运算

总结:泛型无非就是用限定类型、上限(是某个类的子类)和下限(是某个类的父类)

–泛型的擦除
举例:

–由于泛型的擦除,导致原来的泛型丢失,在编译期间没有办法发现类型限定或者类型转换的问题,有可能在运行时出现ClassCastException异常
–泛型的应用
举例:
JDBC中的模块设计

※异常机制的使用
什么是异常机制 ?
一般来说,高级一点的编程语言,如Java, Php,javascript, c#它们都具备一套用来处理, 在程序的运作过程中监视与捕获突发的各种异常的机制,可允许在相应的代码当中编写相应的补救措施/处理办法。
※–使用try…catch捕抓异常
举例:

–异常的体系架构
举例:

–错误:

–异常:
可以通过trycatch进行捕抓,或者使用throw进行异常的抛出
try{
}catch(异常类型 e){
}

–Checked异常和RumTime异常
举例:
Checked异常为检查时异常,需要在编译期间进行异常的处理,比如SQLException\IOException
RumTime异常为运行时异常,在运行期间会出现,程序员可以在程序中预先进行异常的捕抓和处理、比如:NullPointerException。。。

※–多异常的捕抓
举例:
try{
}catch(异常类型1 e){
}
catch(异常类型2 e){
}

–访问异常类的信息
举例:
//打印异常栈踪迹
e.printStackTrace();
//打印异常的信息message
System.out.println(e.getMessage());
//返回异常跟踪栈的对象数组【异常链、异常来源线索】
e.getStackTrace();

※–finally语句块
–finally和trycatch一起使用的
–不管trycatch中是否有出现异常都会执行finally中的代码
–finally会影响方法的返回值、finally中如果有return语句,则trycatch中的return就不起作用,最终还是返回finally中的数据
finally的作用 JDBC数据库操作 或者 IO流等操作中 进行资源关闭

※–使用throws声明异常
–在方法中声明方法所有抛出的异常,用于声明异常类型(将异常往上抛,不处理异常)

※–使用throw抛出异常
–抛出异常的关键字,用于抛出异常

–trycatch是捕抓并处理异常
–throws只是声明异常和将异常往上抛,不处理异常
–throw是抛出异常

※异常链是异常出现的跟踪栈信息,里面包含了方法的调用关系和原始抛出异常的位置

※–自定义异常类
–自定义一个类,继承Exception,然后提供构造器初始化异常信息

举例:
Person【name\sex\age】
当给age进行赋值时,不能超过一定的数值范围,否则就抛出一个自定义的AgeOutOfRangeException
//1、定义Person类
//2、定义setAge方法,声明异常

–异常类处理规则
–不要过度使用异常(要正确使用),在需要进行异常捕抓或者定义时使用
–不要使用过大trycatch块
–避免使用捕抓所有异常的操作
–不要忽略捕抓到的异常,一定有具体的处理操作

Java中的泛型与异常机制相关推荐

  1. java如何用反射把具体方法抽象_如何在Java 中使用泛型或反射机制对DAO进行抽象...

    如何在Java 中使用泛型或反射机制对DAO进行抽象 发布时间:2020-11-26 16:07:42 来源:亿速云 阅读:80 作者:Leah 本篇文章为大家展示了如何在Java 中使用泛型或反射机 ...

  2. Java 中的泛型(两万字超全详解)

    文章目录 前言 一.泛型概述 1. 什么是泛型?为什么要使用泛型? 2. 泛型使用场景 3. 泛型概述小结 二.泛型类 1. 泛型类的定义 2. 泛型类的使用 三.泛型接口 四.泛型方法 1. 泛型方 ...

  3. Java中非法参数的异常_Java中的异常

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  4. 【笔记】JAVA中的泛型和反射

    泛型 Java的泛型是如何工作的?什么是类型擦除? ----泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息.例如List在运行时仅用一个Lis ...

  5. [转载] 详解Java中的泛型

    参考链接: Java中具有泛型的有界类型 1.什么是泛型 泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参.那么参数化类型怎么理解呢?顾名 ...

  6. Java中的泛型全解析(一)

    为什么我们需要泛型? 通过两段代码我们就可以知道为何我们需要泛型 实际开发中,经常有数值类型求和的需求,例如实现int类型的加法, 有时候还需要实现long类型的求和, 如果还需要double类型的求 ...

  7. Java 中的泛型是什么,它有什么作用?(十五)

    Java中的泛型是一种类型参数化机制,它使代码更具可读性.可重用性和稳健性.在Java中,通过使用泛型,可以将类型作为参数传递给类或方法,并在编译时执行类型检查,从而避免许多运行时错误. 泛型的基础 ...

  8. 聊聊Java中的泛型

    聊聊Java中的泛型 文章目录 聊聊Java中的泛型 参考资料 一.概述 1. 泛型的定义 1.1 定义 1.2 常见形式 2. 为什么需要泛型 3. 泛型的优点 4. 泛型的使用 4.1 泛型类 4 ...

  9. Java中创建泛型数组

    Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...

最新文章

  1. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile.java 对应的 dalvik_system_DexFile.cc 本地函数分析 )
  2. 5年前面试题引发的“血案”(番外篇)(总结和乱侃)
  3. Consumer搭建
  4. 51nod 1379 索函数
  5. 美团点评金融平台Web前端技术体系
  6. 装箱问题(洛谷-P1049)
  7. visio防火墙可以连接什么_Visio类似的高性价比的替代软件
  8. atm系统的用例模型_ATM银行系统用例图.doc
  9. sublime text mac版实施输入处理程序的技巧
  10. Photoshop更换证件照底色
  11. 【Rust日报】 2019-04-28
  12. jscriptbug
  13. Python模拟鼠标点击与实时获取鼠标位置
  14. 体验部署ThinkAdmin
  15. 基于YOLOV5的目标检测模型-口罩检测
  16. 基于SSM实现的物流管理系统(完美运行,包含数据库源代码,可远程调试)
  17. js php mysql 是b,MySQL_BBS(php mysql)完整版(七),//下面是 top.js function KB_kee - phpStudy...
  18. HP小型机 nPartiton 分区管理
  19. 内存不能为read九大原因
  20. 张小白的渗透之路(二)——SQL注入漏洞原理详解

热门文章

  1. GameFramework教程☀️福利(三):教你做闪屏动画,App启动页
  2. KEGG Drug 数据库
  3. 跳动的文字:CSS3动画、倒影、变量
  4. 取消远程计算机控制,如何远程关闭对方电脑
  5. Java中的正则表达式匹配过程
  6. linux 路由匹配原则,Nginx localhost路由匹配规则
  7. 数据结构树(Tree)详解
  8. VirtualBox安装OpenKylin说明书
  9. 2021-08-05 JavaScript
  10. mysql json 行转列_JSON数据行转列的应用