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();
    }
}
View Code

二、 lambda表达式

    1、函数式接口

posted @ 2017-03-08 01:14  海角七号已存在  阅读(73)  评论(0)    收藏  举报