Java8新特性解析

一.Java8对接口的改变

          1.接口增加了default方法和static方法,这两种方法可以有方法体

           2.default方法属于实例,static属于类

           3.接口里面的静态方法不会被继承(直接调用类型加方法名称调用静态方法),静态变量会被继承

           4.如果一个类实现了多个接口(defalut定义的接口),并且这些接口互相之间没有继承关系,同时存在相同的默认方法,

              会报错,不相关默认值错误

              如果有继承关系,那么会执行子接口方法

            5.如果遇到有多个继承,并且有相同的默认方法,实现类可以通过特殊语法指定要访问哪个接口的方法。

               在实现类、子接口中重写默认(defalut)方法,在方法里面写:

               <接口>.super.<方法名>([参数])

             6.如果一个接口只有一个抽象方法(包括继承的),该接口是一个函数接口

             可以使用lambo表达式实现            

             7.如果接口里面使用 FunctionalInterface 注解限定接口里卖弄只能有一个抽象方法 有且只有一个,但是可以有defalut方法

二.lambo表达式

            1.只能针对函数式接口使用(也就是说只能对)

以前我们使用匿名内部类进行

Text text = new Text(){
				public void test1(){
					System.out.println("使用匿名内部类");
				}
			};
			text.test1();

lambo表达式无需写参数类型,如果方法体只有一句话,那么可以省略大括号以及分号

test test = (a)->{
			System.out.println("我是lambo表达式");
		};

注意点:

          1.如果形参列表是空的,只需保留()即可

           2.如果没有返回值,只需要在{}写执行语句即可

           3.如果几口的抽象方法只有一个形参,()可以省略,只需要参数的名称即可。

           4.如果执行语句只有一行,可以省略{},但如果有返回值,有点特殊

            5.形参列表的数据类型自动推断,只要参数名称。

            6.如果函数式接口的方法有返回值,需要要给定返回值,如果执行语句只有一行代码,九二一省略大括号。但必须同时省略return

方法的引用

           

猜你喜欢

转载自blog.csdn.net/afdasfggasdf/article/details/83817869