记 Java 各版本新特性

Java 8 —— 下面主要讲9个特性:

Lambda 表达式(也可以称为“闭包”)

(paramList) -> expression;
或者
(paramList) -> {statments;}

特征:

  • 参数类型声明可选:编译器可识别参数值
  • 只有一个表达式,那么表达式的值作为 Lambda 的返回值;用大括号 {} 括起来的,多个表达式,需要使用 return 关键字指明返回值
  • Lambda 中不能声明和任何局部变量同名的,参数或者局部变量

演示用例:

public interface MathOperation {

    int operation(int a, int b);
    
}
public class Tester {

    public static void main(String[] args) {
        MathOperation add = (int a, int b) -> a + b;    //参数列表、表达式返回值相同即可;方法实现甚至可以没有:Lambda表达式相当于一个方法类,作为接口的实现
        System.out.println(add.operation(1, 2));
    }

}

接口默认方法

public interface vehicle {
    default void print(){
        System.out.println("我是一辆车!");
    }
}
public interface Vehicle {
    default void print(){
        System.out.println("Vehicle");
    }
}

public interface FourWheeler {
    default void print() {
        System.out.println("FourWheeler");
    }
}

public class Car implements FourWheeler, Vehicle {
    @Override
    public void print() {
        System.out.println("Car");
    }
}
public class Car implements FourWheeler, Vehicle {
    @Override
    public void print() {
        FourWheeler.super.print();    //这里实际上就是普通的调用了接口提供的实现,重载本身没做任何事(当然实际情况下,除了选择接口的实现,往往还会做更多与类自身相关的)
    }
}

静态默认方法(接口也可以像类一样,有静态方法):

public interface Vehicle {
    static void blowHorn() {
        System.out.println("blow horn");  //就像类的静态方法一样:Vechile.blowHorn();
    }
}

Java 7:

Java 6:

猜你喜欢

转载自www.cnblogs.com/quanxi/p/7512499.html