Java8,静态默认方法,Lambd继承接口写法,与代码覆盖率测试

来源:互联网 发布:保罗皮尔斯知乎 编辑:程序博客网 时间:2024/06/05 19:07

接口在Java8新特性中,可以用default修饰方法,可以写方法体,实现代码,子类不必强制重写,可调用。Java8接口还可以写静态方法体,可以调用。


接口的实现方式:

第一种方式:写实现类实现


第二种方法:匿名内部类

new Testmpl(){


}


Lambd表达式适用场景:接口中只有一个方法


publi class shoupiaoyuan{


public static void test(Testmpl a);


public static void main(String[] args){

   test(()->{...};);


}


}


为什么可以这样写呢?

因为调用test();就相当于是实现了,test的参数要求是接口,以前的接口2中传入实现类或是传入匿名接口实现,而Lambd就相当于匿名内部类。


Lambd在另一种情况下另一种写法:

test(()->...);中间,中间没有括号了,不过没啥变化,详细看下,这Lambd去掉括号适用场景,只有一个接口并且接口中只有一句代码,就可以去掉括号了。


Lambd参数写法

test((String a)->...);

假设上述空参数接口变成了需要接收字符串的了,就需要在括号中加入参数,参数要互相呼应,因为Lambd只适用于一个接口,所以是实现,而test是用来确定接口的。


第二种参数写法

test((a)->...)为啥参数类型都没有?这个我认为接口确定,实现确定,方法确定下,参数不加方法名是可以识别的。


还有一种怪异的写法:

Cs h=Integer::parseInt;这种针对方法的。这个我没有理解到。。。忒。。


代码覆盖率测试,在eclipse中除了run as运行,与debug调试,还有个coverage as代码覆盖率测试,当你点击这个运行的时候,会出2-3中颜色。


黄色:代表分支语句,不是if else,这种已知的条件分支,而是像随机数这种无法确定的,这种分支,就会被标为黄色语句

红色:代表这句代码没有被执行到

绿色:绿色代表执行到了这句代码


eclipse的源码包与源码包虽然不在同一个地方,但他们却在同一个工程中方法,比如有src与test包,


当你运行代码覆盖率测试,src与test都会被执行,如果,src中的包引用到了test下的包,test下被引用的包也会显示绿色被执行,如果没有引用到test只是运行src,那么test包都会是红色,都是没有被执行。


因为你们是同一个工程。会一起运行,源码包,不过是将代码分开放,运行的时候你们源码包都是一起运行。如果是不同工程,那不行,你其他工程引不到,更别提一起运行了。