标签:
java8出来好长一段时间了但是一直都没什么机会在项目中使用。今晚有时间就了下 总结了下。
特性1: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); } });
新版本
Collections.sort(names, (String a, String b) -> { return b.compareTo(a); });
二 函数式接口
每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。我们可以将lambda表达式当作任意只包含一个抽象方法的接口类型,确保你的接口一定达到这个要求,你只需要给你的接口添加 @FunctionalInterface 注解,编译器如果发现你标注了这个注解的接口有多于一个抽象方法的时候会报错的。
@FunctionalInterface interface Converter<F, T> { T convert(F from); } Converter<String, Integer> converter = (from) -> Integer.valueOf(from); Integer converted = converter.convert("123"); System.out.println(converted); // 123
三 方法与构造函数引用
w先不写了 有点晕
标签:
原文地址:http://my.oschina.net/wuao/blog/522319