明天软件构造就期末考试了,今晚也是复习完了最后一章,重点是异常。
java中Throwable这个类可以被作为异常抛出的类,继承它的分为异常Exception和错误Error.
Exception表示程序需要捕捉和处理的的异常;
Error表示系统级别的错误和程序无需处理的。
异常处理是与程序执行是并行的,可以用try语句来实现checked异常的捕捉和处理。如下:
try{
//可能发现异常的语句块
}catch(异常类型,e){
//发生异常时候的执行语句块
} finnally{
//不管是否发生异常都执行的语句块
}
也可以使用throws向上声明。
然后就是类型擦除的问题,Java在编译后的字节码(.class)文件中是不包含泛型中的类型信息的,使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉,这个过程就称为类型擦除。如在代码中定义的List和List等类型,在编译之后都会变成List,JVM看到的只是List,而由泛型附加的类型信息对JVM来说是不可见的。 因此,对于JVM来说,List和List就是同一个类,所以,泛型实际上是Java语言的一个语法糖,又被叫做伪泛型。
泛型的类型擦除原则是:
消除类型参数声明,即删除<>及其包围的部分。
根据类型参数的上下界推断并替换所有的类型参数为原生态类型:如果类型参数是无限制通配符或没有上下界限定则替换为Object,如果存在上下界限定则根据子类替换原则取类型参数的最左边限定类型(即父类)。
为了保证类型安全,必要时插入强制类型转换代码。
自动产生“桥接方法”以保证擦除类型后的代码仍然具有泛型的“多态性”。
今天就更到这里,明天就要最后一场考试了,希望能够取得理想的成绩。