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包都会是红色,都是没有被执行。
因为你们是同一个工程。会一起运行,源码包,不过是将代码分开放,运行的时候你们源码包都是一起运行。如果是不同工程,那不行,你其他工程引不到,更别提一起运行了。
接口的实现方式:
第一种方式:写实现类实现
第二种方法:匿名内部类
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包都会是红色,都是没有被执行。
因为你们是同一个工程。会一起运行,源码包,不过是将代码分开放,运行的时候你们源码包都是一起运行。如果是不同工程,那不行,你其他工程引不到,更别提一起运行了。
相关文章推荐
- 二、Java8的默认方法和静态接口方法
- java8-新特性--(接口的默认方法与静态方法)
- 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
- 浅谈 Java 8 接口默认方法和静态方法的设计
- Java8---2.函数接口的默认方法和静态方法
- Java 实现多线程的3种方法:继承Thread类;实现Runnable接口;实现Callable接口。具体代码实现实例
- java8新特性之接口默认方法&静态方法
- Java8中新特性Optional、接口中默认方法和静态方法详解
- Java8接口中默认方法和静态方法
- Java8特性之接口的默认方法与静态方法
- Java8新特性Optional、接口中的默认方法与静态方法
- Java8新特性之接口的默认方法和静态方法
- Java8新特性Optional、接口中的默认方法与静态方法
- Java 代码测试接口的方法
- java8之接口的默认静态方法
- Java8新特性 接口默认方法,接口静态方法
- Java 8 新特性:接口的静态方法和默认方法
- 30分钟入门Java8之默认方法和静态接口方法
- JavaSE_8系列博客——Java语言的特性(五)--接口和继承(6)--默认方法的使用场景
- 30分钟入门Java8之默认方法和静态接口方法学习