今日总结-java8新特性

2019-11-19  本文已影响0人  啦啦啦_9a5f
函数式接口:
lambda表达式
public void test(){
  Runnable r1 = new Runnable(){
      @Override
      public void run(){
          System.out.println("我爱北京");
      }
  }
}

lambda表达式

Runnable r1 = ()->System.out.println("我爱北京");

(2)需要一个参数,但是没有返回值:Consumer消费者型接口,只有一个抽象方法 void accept(T)

Consumer<String> con = new Comsumer<String>(){
   @override
   public void accept(String s){
     System.out.println(s);
   }
}

lambda表达式

Consumer<String> con = (String s)->{
    System.out.println(s);
};

(3)数据类型可以省略,因为可由编译器推断得出,称为类型维护

Consumer<String> con1 =(s)->{
  System.out.println(s);
}

(4)Lambda若只需要一个参数时,参数的小括号可以省略

Consumer<String> con1 = s->{
  System.out.println(s);
};

(5)Lambda需要两个或以上的参数,多条执行语句,并且可以有返回值

Comparator<Integer> com1 = new Comparator<Integer>(){
  public int compare (Integer o1,Integer o2){
    System.out.println(o1);
    System.out.println(o2);
    return o1.comparaTo(o2);
    }
}

Lambda表达式

Comparator<Integer> com2 = (o1,o2)->{
  System.out.println(o1);
  System.out.println(o2);
  return o1.compateTo(o2);
};

(6)当Lambda体只有一条语句时,return与大括号若有,都可以省略

Comparator<Integer> com1 = (o1,o2)->{
  return o1.compareTo(o2);
}

Lambda表达式

Comparator<Integer> com2 = (o1,o2)->o1.compareTo(o2);
方法引用
Consumer<String> con1 = str->System.out.println(str);
con1.accept("北京");
printlnStream ps = System.out;
Consumer<String> con2 = ps::println;

(2)类::静态方法

Comparator<Integer> com1 = (t1,t2)->Integer.compare(t1,t2);
com1.compare(12,21);

方法引用:

Comparator<Integer> com2 = Integer.compare;
com2.compare(12.3);
Function<Double,Long> func1 =  d->Math.round(d);
func1.apply(12.3);

方法引用:

Function<Double,Long> func2 = Math::round(d);
func2.apply(12.6);
上一篇 下一篇

猜你喜欢

热点阅读