java8

来源:互联网 发布:保定seo公司 编辑:程序博客网 时间:2024/06/11 17:38

之前学习python,对数据进行处理就感觉到了lambda的简洁,这次java8也添加了lambda表达式,确实很吸引人。周末学习了一下java8,有一些体会:

 Java8引入了lambda表达式,是一个很好的尝试,它会使我们的代码更加清爽,更加简洁。但是请等一下,别着急把我们手头的代码全部lambda化,lambda适合进行数值运算,或函数中的逻辑比较简单的地方。不顾规则的使用,会使代码变的臃肿,难以阅读。

 1、 Java8引入了lambda表达式,让函数可以像变量一样使用。那么,我们必须要规定lambda表达式的类型,java中给出了一些通用的类型,当然我们也可以自己定义一些类型,这些类型的本质就是函数式接口。而函数式接口,也就是有且只有一个方法的接口。

 下面我们写一个自己的函数接口:

public interface MyInterface {   void say(String s);}
之后调用它:

 MyInterface myInterface = (s) -> {System.out.println(s);}; myInterface.say("hello");

2、Java8中还在接口中实现了default方法,这个方法其实是为了向前进行二进制兼容的,很棒的一个想法,任何实现了接口的方法,都会拥有接口的defalut方法(前提是接口没有覆盖它,如果实现了它的类或接口覆盖了的话,那只能调用子类的方法了)。集合中新增的foreach方法就是一个很好的例子。

默认函数是有必要。如果没有默认函数的概念,代码是无法兼容之前的代码的。例如,我们在Iterable中定义了foreach函数,而所有实现了该接口的类都要实现这个方法,对JDK自身的类(ArrayList等)没有问题,但是他会导致大量使用该接口的第三方的类库或我们自己编写的代码无法使用。

 

原创粉丝点击