java8新特性初探索
java8的新特性
一、接口可以添加默认方法
java8允许我们在接口中设定默认方法,这个功能可以实现类似于抽象类的功能,具体实现如下
1 package demo1; 2 3 /** 4 * Created by lenovo on 2017/3/7. 5 */ 6 public interface IDemo { 7 void print(); 8 default double sqrt(int num){ 9 return Math.sqrt(num); 10 } 11 }
1 package demo2; 2 3 import demo1.IDemo; 4 5 /** 6 * Created by lenovo on 2017/3/7. 7 */ 8 public class Demo { 9 10 public static void main(String[] args){ 11 IDemo demo = new IDemo(){ 12 @Override 13 public void print() { 14 System.out.println("finish"); 15 } 16 }; 17 System.out.println(demo.sqrt(4)); 18 demo.print(); 19 } 20 }
输出结果
因为在接口中可以定义默认方法,所以java将会面临在一些问题,比如一个实现类实现了两个接口,这两个接口有一格名称重复的方法,且在一个活全部接口中进行了默认方法的定义,这时候需要在实现类中实现这个默认方法,通过super属性进行调用
package demo1; /** * Created by lenovo on 2017/3/8. */ public interface A { void print(); default void test(){ System.out.println("A"); } } package demo1; /** * Created by lenovo on 2017/3/7. */ public interface B { void print(); default void test(){ System.out.println("B"); } } package demo2; import demo1.B; import demo1.A; /** * Created by lenovo on 2017/3/7. */ public class Demo implements B, A { @Override public void print() { System.out.println("finish"); } @Override public void test() { A.super.test(); } public static void main(String[] args){ Demo demo = new Demo(); demo.test(); } }
二、 lambda表达式
1、函数式接口

浙公网安备 33010602011771号