文章系学习Java8新特性
教程地址: Java8简明教程
在接口中定义默认方法
- 通过static修饰, 该方法不可被重写.
- 通过default修饰, 该方法不仅仅默认实现, 还可以被实现类重写
示例代码
/**
* Created by imyzt on 2019/1/17 10:59
* 可以在接口中定义默认方法
*/
public interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
static int abs (int b) {
return Math.abs(b);
}
}
class Main {
public static void main(String[] args) {
Formula formula = new Formula() {
@Override
public double calculate(int a) {
return sqrt(a * 1000);
}
};
double calculate = formula.calculate(1);
System.out.println(calculate); //31.622776601683793
double sqrt = formula.sqrt(1000);
System.out.println(sqrt); //31.622776601683793
int abs = Formula.abs(1000);
System.out.println(abs); //1000
}
}
Lambda表达式
Lambda表达式是java8最大的更新了, 使得一些操作十分简单明了.
不使用lambda表达式进行集合排序
List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, new Comparator <String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
使用Lambda表达式进行集合排序
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
- 不过,还可以省去返回值的表述
Collections.sort(names, (String a, String b) -> b.compareTo(a));
- Lambda可以自动识别类型, 因此我们可以删除掉类型声明
Collections.sort(names, (a, b) -> b.compareTo(a));
- 当然, 也可以将具体动作简化
Collections.sort(names, Comparator.reverseOrder());
- 最后, java8的jdk集合中实现了sort方法, 因此我们可以用最后这句话来实现集合的排序
names.sort(Comparator.reverseOrder());