java重新_java 重新学习 (六)

一、java7以后,使用带泛型的接口,类定义变量,那么调用构造器创建对象时构造器的后面不必带上泛型。List list = new ArrayList()<>;菱形语法

java9甚至允许创建匿名内部类时使用菱形语法 A a = new A<>{   }

二、当创建了带泛型声明的接口或父类后,子类或者实现类继承实现父类接口时,父类与接口不可以在包含泛型形参。 如 A extends B 写T 不允许,指明实际参数

如 A extends B 或 A extends B 也可以。调用方法时形参必须添加具体形参。

三、类型通配符  List>,Set>,Map,?> 这种写法支持任何支持泛型声明的接口和类。    但是不能向其中添加对象(除了null)。因为无法确定集合中元素的类型。

设定类型通配符上限 List< 子类 extends 父类>   但是不能向其中添加对象。因为无法确定集合中元素的类型。Bar是Foo的子类,A 相当于 A extend Foo>的子类,可已经A 赋值给 A extends Foo>类型的变量,这种型变方式称为协变。

List extends Foo> list= new ArrayList<>();

List barList= new ArrayList<>();

list= barList; //

设定类型通配符下限 List< ? super 子类>  ,Foo是Bar的子类,A  A 赋值给 A super Foo>,这种型变称之为逆变。能往集合中添加Foo 或者Foo子类的对象。不能添加E的任何父类对象,读取时的对象为Object 类型。。

List super Foo> list= new ArrayList<>();

List barList= new ArrayList<>();

list= barList; //逆变

四、泛型方法 语法      修饰符 返回值类型 方法名(形参列表){   //方法体}

五、java7 捕获多种类型的异常是,多种异常类型之间要用  |   隔开。 异常变量有隐式final修饰不能 对 变量二次赋值

try{

}catch( A | B |C 变量){//ABC 代表不同的异常类

变量 = new Exception("exception"); 错误 变量是隐式final修饰。

}

六、异常对象的几个重要方法

getMessage()  : 返回该异常的详细描述字符串

printStackTrace() : 该异常的跟踪栈信息输出到标准错误输出。

printStackTrace(PrintStream s)  将该异常的跟踪栈信息输出到指定输出流

getStackTrace() 返回该异常的跟踪栈信息。

七、垃圾回收不会回收任何物理资源,如数据库连接,网络连接,磁盘文件等。这些物理资源必须进行显式回收。

八、java9 会在try语句块中自动关闭资源。相当于包含了隐式的finanlly块(这个finally块用于关闭资源),因此这个try语句可以没有catch或者finally

创建对象 A ,Btry( A,B){

}

或者try(创建对象 A ;B ){

}

九、check异常   要么显式声明抛出,要么显式捕获并处理。 uncheck异常 runtimeException ,error.

十、使用throws 声明抛出异常。 在方法上使用 ,void method () throws exception 1,exception2(){}

十一、throw new Exception("exception");

十二、声明自定义异常都应该继承Exception基类,如果希望定义Runtime异常,要继承RuntimeException基类。定义自定义异常时通常要提供两个构造器

一个是无参构造器;另一个是带一个字符串参数的构造器(也就是异常对象的getMessag()方法的返回值)。

十三、避免把java的异常跟踪栈打印出来。要编写代码处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值