您的位置:首页 > 编程语言 > Java开发

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

2017-09-03 15:17 746 查看
接口在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包都会是红色,都是没有被执行。

因为你们是同一个工程。会一起运行,源码包,不过是将代码分开放,运行的时候你们源码包都是一起运行。如果是不同工程,那不行,你其他工程引不到,更别提一起运行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: