美文网首页
2019-01-24 JDK1.8新特性NO:01

2019-01-24 JDK1.8新特性NO:01

作者: Butif_D | 来源:发表于2019-01-28 16:53 被阅读0次
  • Default 默认
接口中的方法将拥有  【方法体】
eg:
      default String getClassName(){
          return this.getClass().getName();
        }
简化代码、方便维护
  • 函数式接口
函数式接口:只有一个抽象方法的interface
@FunctionalInterface       -->  jdk1.8提供的规范注解
eg:
      @FunctionalInterface
      public interface MyInter{
          //仅有一个抽象方法
          public void lambdaTest();
        
          default String defaultTest(){
                return this.getClass();
           }
            //静态大法
          static List<String> sortList(List<String> list);
        }
Lambda表达式
lambda表达式源于:  入 演算;  它是图灵完整的;可以用lambda表达式来表示任何数学算式
   其最主要的概念就是表达式:
       <expression> := <variable> | <funtion> | <application>
       variable:占位符
       function:匿名函数定义,需要一个变量,并且声称另一个lambda表达式;
       application:把一个函数当做一个参数的行为
       
       
   
   
   
   1.通过数组元素的长度排序:
       List<String> li = Arrays.asList("this","is","first","lambda");
       Collections.sort(li,(first,second) -> first.length() - second.length());

       System.out.println(Arrays.toString(li.toArray()));
       
                   :[is, this, first, lambda]
                   
       (first,second) -> first.length() - second.length()是
Comparator<String>的lambda表达式!
       
   1.1Stream的集合遍历操作
           li.stream().filter(l -> l.hashCode() > "a40".hashCode())
       
       
   2.表示匿名内部类:  函数接口;接口中只有一个方法
       public static void main(String[] args) {

       String ss1 = get(new Text() {
           @Override
           public void sout(String s) {
               System.out.println("ss");   //逻辑部分
           }
       });
       
     String ss/*返回值*/ = get((e/*参数*/) -> System.out.println("ss")/*//逻辑部分*/);
       
       System.out.println(ss);
   }

   public static String get( Text text) {
       return "haha";
   }

相关文章

网友评论

      本文标题:2019-01-24 JDK1.8新特性NO:01

      本文链接:https://www.haomeiwen.com/subject/jhdujqtx.html