文章目录
1.接口默认方法
接口可以有一个默认方法 多个静态方法
lambda表达式需要函数式接口的支持
函数式接口:只有一个抽象方法的接口
@FunctionalInterface验证接口是否为函数式接口
public class Java8Tester {
public static void main(String args[]){
Vehicle vehicle = new Car();
vehicle.print();
}
}
@FunctionalInterface
interface Vehicle {
default void print(){
System.out.println("我是一辆车!");
}
static void blowHorn(){
System.out.println("按喇叭!!!");
}
}
interface FourWheeler {
default void print(){
System.out.println("我是一辆四轮车!");
}
}
class Car implements Vehicle, FourWheeler {
public void print(){
Vehicle.super.print();//指定要继承的默认方法
FourWheeler.super.print();
Vehicle.blowHorn();
System.out.println("我是一辆汽车!");
}
}
lambda实现collections.sort排序
public class Lambda03 {
public static void main(String[] args) {
List<Employee> employees = new ArrayList<>();
employees.add(new Employee(58,"C"));
employees.add(new Employee(18,"A"));
employees.add(new Employee(38,"G"));
Collections.sort(employees,(e1,e2)->{
if(e1.age!=e2.age){
return -Integer.compare(e1.age,e2.age);//可以加个-号调整排序方式
}else {
return e1.name.compareTo(e2.name);
}
});
for (Employee e:employees) {
System.out.println(e);
}
}
}
class Employee {
int age;
String name;
public Employee(int age,String name){
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Employee{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}