您现在的位置是:首页 > 后台技术 > JavaJava

Java8新特性(图文)

第十三双眼睛2022-03-11【Java】人已围观

简介java8新特性

接口新语法
接口中可以有静态方法
interface A{
    static void hello(){
        System.out.println("hello");
    }
}
运行以后,正常输出了hello
通常,接口中的静态方法用于产生接口对象

Lambda表达式
用Lambda表达式去实现接口,接口中只能有一个方法。
如下:
有一个学生类
public class Student {
    private String name;
    private Integer age;
    private String classNumber;
}
有一个接口,用来实现对学生的过滤
public interface Filter {
    boolean test(Student student);
}
第一种实现:写个类去实现,略
第二种实现:用匿名内部类的写法去实现
Filter t1 = new Filter() {
    @Override
    public boolean test(Student student) {
        if (student.getAge() < 30) {
            return true;
        }
        return false;
    }
};
第三种实现:
Filter f2 = (Student student) -> {
    return student.getAge() < 30;
};
第四种实现:
Filter f3 = (Student student) -> student.getAge()< 30;
第五种实现:最终实现
Filter f4 = (student) -> student.getAge()<30;
注意:当实现有多条语句时,必须要用大括号包起来。
我们想按照一定的规则将学生对象进行过滤
public static List<Student> filterStudent(List<Student> studentList,Filter filter){
    List<Student> resultList = new ArrayList<>();
    studentList.forEach(student -> {
        if (filter.test(student)) {
            resultList.add(student);
        }
    });
    return resultList;
}
调用的时候,可以这么写:
List<Student> students = filterStudent(list, student -> student.getAge() < 30);
将Lambda表达式直接作为一个参数传进去
实现一个线程
Thread t = new Thread(() ->{ System.out.println("hello"); });

遍历一个数组:
List<String> ss = new ArrayList<>();
ss.add("aa");
ss.add("bb");
ss.add("cc");
ss.add("dd");
ss.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
});
上面是JDK8的写法,如果要改成Lambda的写法,如下:
ss.forEach(s -> { System.out.println(s); });
函数式接口
凡是只有一个抽象方法的接口就叫做函数式接口
@FunctionalInterface
编译器会检查,校验是否是函数式接口
JDK中定义好的函数式接口
接口 函数描述符 方法名
Predicate<T> T-> boolean test
Consumer<T> T->void accept
Function<T,R> T->R apply
Supplier<T> ()->T get
BiPredicate<T,R> (T,R)->boolean test
BiConsumer<T,R> (T,R)->void accept
BiFunction<T,U,R> (T,U)->R apply
UnaryOperator T->T apply
BinaryOperate<T> (T,T)->T apply

方法引用
普通方法引用







 

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们