Java中的异常处理、泛型!图文讲解
1.异常: 非正常的情况,改变程序的执行流程
- 堆栈提示顺序
Throwable
|
*空指针就是没有对象!**空指针就是没有对象!**空指针就是没有对象!*
2.异常处理方式:
- try-catch
- 语法:
Try{
可以会出现异常的代码
}catch(异常类类型 对象名)}
处理对象
}
- 情况:
- 没有异常。Try 执行了,catch没执行
- 异常类型匹配。Try执行了,catch也执行了。
- 异常类型不匹配。Try也执行了,catch也执行了。
- try- catch-finally
Try{
会出现异常的代码;
}catch{}
- Throw抛异常:之间抛异常 如果 抛出的 运行时异常,可以不用throws声明
- 自定义异常
- 调试:设置断点;
- 单步运行;
- F6 单步跳过;
- F5单步跳入;
- 调试:设置断点;
- 发现和解决问题。
方法重写:子类,实例方法,名相同。参数一致,返回值类型一致,访问权限不能比父类更严格,异常范围不能 比父类更大。
|
3.泛型
概念:参数化类型
类型参数:
- 定义时:形式类型参数
- 应用时:实际类型参数:(必须是引用类型)
- 参数化类型:类型<实际类型参数>
- 好处:
- 在编译期进行类型检查;
- 类型不确定。
定义泛型类:class类名<类型参数>{
}
- 通配符:? 无界通配符 匹配 任意类型
? extends上限类 匹配 上限类 和下限的子类
? super 下限类 匹配 下限类 和 下限类的父类
- 类型参数 和 通配符的区别:
- 类型参数 可以表示一中了类型,泛型类型;通配符不能表示一种类型。
- 类型参数 只能指定上限和下限;
- 类型参数 可以指定多个上限;统配符,不能指定多个上限。
- 泛型构造器
- 泛型方法
- 擦除原则:①参数化类型。
擦除后为 原生类型
- Point3<String> p; ->Point3 p;
- ②类型参数:1)无界类型参数,擦除后为Object class Point<T>{}->Point<Object>{类体部分都用Object}变成Objuect x;
- 2)有一个上限的类型参数,用上限来替换:<T extends A ->A
- 3)有多个上限,由第一个上限来替换;<T extenfs A & B> ->A