java8新特性

来源:网络整理 作者:佚名2017年11月27日 15:54
关键词:JAVA
  default拓展方法  
java8为接口声明添加非抽象方法的实现,也成为拓展方法。
  public interface Formula {   void doSomething();   default void before() {   System.out.println(“我是拓展方法”);   }   }   public class FormulaService implements Formula {   @Override   public void doSomething() {   before();   System.out.println(“我是override方法”);   }   }   Lambda表达式   java8引入函数式编程,Lambda则是函数式编程的基础。   List《String》 list = Arrays.asList(“a”, “b”, “c”);   // java8之前   CollecTIons.sort(list, new Comparator《String》(){   @Override   public int compare(String o1, String o2) {   return o1.compareTo(o2);   }   });   // lambda   CollecTIons.sort(list, (String o1, String o2) -》 {   return o2.compareTo(o1);   });   // 简洁lambda   CollecTIons.sort(list, (String o1, String o2) -》 o2.compareTo(o1));   // 更简洁lambda   CollecTIons.sort(list, (o1, o2) -》 o2.compareTo(o1));   函数式接口   一个函数式接口有且只能有一个抽象方法申明,其中该注意的是 @FunctionalInterface 注解,此时如果在接口中定义了第二个抽象方法,编译器将会抛出异常。当然如果不加该注解也不是不行,如果接口中有多个抽象方法,而你又使用了lambda表达式,则在调用处会抛出异常。   @FunctionalInterface   public interface Formula《F,T》{   T convert(F var1);   }   Formula《String,Integer》 function = (var1 -》 Integer.valueOf(var1));   Integer var2 = function.convert(“1000”);   方法和构造函数引用   方法引用的标准语法是 类名:方法名类型示例   JAVA8新特性   引用静态方法   Formula《String,Integer》 function = (Integer::valueOf);   Integer var2 = function.convert(“1000”);   引用某个类型的任意对象的实例方法   public static void main(String[] args) {   String[] array = {“贱明”, “学友”};   Arrays.sort(array, String::compareTo);   }   引用构造方法   // 定义工厂   interface PersonFactory《P extends Person》{   P create(String name);   }   // Person类的构造方法   public Person(String name) {   this.name = name;   }   // 创建   PersonFactory《Person》 factory = Person::new;   factory.create(“贱明”);
12下一页全文

本文导航

  1. 第 1 页:java8新特性
  2. 第 2 页:Lambda的范围
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:
发表评论
elecfans网友
分享到:

用户评论(0

鸿运国际手机版