河南网站seo设计,做网站商城前景怎么样,网站建设与策划,渌口区市政建设局网站五、泛型
泛型的由来#xff1a;通过Object转型问题引入--为了解决安全隐患
早期的Object类型可以接收任意的对象类型#xff0c;但是在实际的使用中#xff0c;会有类型转换异常的问题
泛型作用
提高安全性(将运行期的错误转换到编译期)
省去强转的麻烦#xff0c;取…五、泛型
泛型的由来通过Object转型问题引入--为了解决安全隐患
早期的Object类型可以接收任意的对象类型但是在实际的使用中会有类型转换异常的问题
泛型作用
提高安全性(将运行期的错误转换到编译期)
省去强转的麻烦取出数据不再是Object不需要强转能确定其类型
泛型基本使用
中放的必须是引用数据类型
前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
不要定义成Object因为没有意义
使用场景
泛型类把泛型定义在类上
定义格式public class 类名
泛型方法把泛型定义在方法上
定义格式public 返回类型 方法名(泛型类型 变量名)
泛型接口把泛型定义在接口上
定义格式public interface 接口名implements接口时需要给定泛型
泛型通配符表示任意类型如果没有明确那么就是Object以及任意的Java类了
? extends E向下限定E及其子类
? super E向上限定E及其父类
六、异常
概述
异常Java程序在运行过程中出现的错误
分类Error服务器宕机数据库崩溃等Exception
编译异常和运行异常
编译异常因为程序编码存在问题必须处理否则无法通过编译
运行异常运行时出现的问题通常因为编码考虑不周导致
异常的继承体系
Throwable Error Exception RuntimeException ... Throwable
Throwable是Exception的父类继承体系
常见方法
getMessage() //获取异常信息返回字符串
toString() //获取异常类名和异常信息返回字符串
printStackTrace() //获取异常类名和异常信息以及异常出现在程序中的位置返回值voidjvm默认的处理方式也是这种 异常处理
jvm默认的异常处理方式
方法内出现异常如果方法内没有进行处理那么会将异常抛给调用者如果到最后都没有处理会交由JVM处理
JVM默认是如何处理异常的抛出一个异常对象异常名称和信息输出到控制台终止运行程序
异常只要在程序内进行了处理后续代码仍然可以执行
编码处理方式一try…catch…finally
try 检测异常
catch 捕获异常并在catch方法体内进行处理 catch可以有多个针对不同异常进行不同处理 try但是不catch那么异常仍然会向上抛出
finally 必要操作如释放资源
注意事项
1.try部分的代码只要遇到第一个异常以后就会寻求异常处理处理异常以后try部分的代码也不会执行但会继续执行其他部分代码
2.jdk1.7以后可以用 | 的形式用一个catch接受多种异常
finally关键字
作用finally语句体一定会执行除非在执行到finally之前jvm退出了(比如System.exit(0))
注意finally在整个方法的return前执行不过即使finally中操作了返回值相关的变量也并不能改变最终return的值但如果finally中做了return那么显然本来要执行的return也就没有机会执行了
应用用于释放资源在IO流操作和数据库操作中常见
编码处理方式二throws
应用需要把方法异常交由调用者处理就用throw把异常对象抛出再通过throws在方法上标识如果方法中声明了多种throw异常那么throws也要多种逗号隔开
throws和throw的区别
throws通知调用者 用在方法声明后面跟的是异常类名 可以跟多个异常类名用逗号隔开 表示抛出异常由该方法的调用者来处理
throw通知本方法 用在方法体内跟的是异常对象名 只能抛出一个异常对象名 指定异常并抛出交由调用者处理后续代码不再继续执行
自定义异常
作用适应具体的业务场景比如人的年龄超过200岁抛出异常年龄错误
创建自定义异常类
继承Exception要throws
继承RuntimeException可以不throws通常不这么干
异常的注意事项
子类重写父类方法时子类的方法必须抛出相同的异常或父类异常的子类(父亲坏了儿子不能比父亲更坏)
如果父类抛出了多个异常,子类重写父类时只能抛出相同的异常或者是他的子集子类不能抛出父类没有的异常
如果被重写的方法没有异常抛出那么子类的方法绝对不可以抛出异常如果子类方法内有异常发生那么子类只能try不能throws