JDK1.8新特性

本文介绍了Java8的几个核心特性,包括接口的默认方法,允许接口中添加非抽象方法实现;Lambda表达式的使用,简化了代码并支持自动类型推导;函数式接口的概念,作为Lambda表达式的载体;方法与构造函数引用的便捷语法;以及访问局部变量的规则。同时,文章提到了Java8中对日期API的改进以及注解的应用,为开发者提供了更强大的工具集。
摘要由CSDN通过智能技术生成

一、接口的默认方法
允许我们给接口添加一个非抽象方法的实现,只需要使用default关键字即可,这个特征叫做拓展方法。

interface Test2 {
    default void Method() {
        System.out.println("方法的实现");
    }
}

public class Test implements Test2 {
    public static void main(String[] args) {
        Test2 test2 = new Test();
        test2.Method();
    }
}

二、Lambda表达式
lambda表达式中访问外层作用域和之前匿名对象中的房方式很相似。
Java编译器可以自动推导出参数类型。

 List<String> names = Arrays.asList(new String[]{"fa", "bfg", "cd", "dF", "dr"});
 Collections.sort(names, new Comparator<String>() {
 	@Override
        public int compare(String o1, String o2) {
        	return o1.compareTo(o2);
        }
  });
Collections.sort(names, (a, b) -> b.compareTo(a));
 	for (String s : names) {
        System.out.println(s);
    }

三、函数式接口(参考菜鸟教程:https://www.runoob.com/java/java8-functional-interfaces.html)
就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
函数式接口可以被隐式转换为 lambda 表达式。
Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。
如定义了一个函数式接口如下:

@FunctionalInterface
interface GreetingService 
{
    void sayMessage(String message);
}

那么就可以使用Lambda表达式来表示该接口的一个实现。

GreetingService greetService1 = message -> System.out.println("Hello " + message);

四、方法与构造函数引用
Java8允许你使用::关键字来传递方法或者构造函数引用。
有一个Person类,一个PersonFactory对象接口。
PersonFactory PersonFactory=Person::new;
Person person=PersonFactory.create(“lisi”,“女”);
我们只使用Person::new来获取Person类构造函数的引用,Java编译器会根据PersonFactory.create()方法的签名来选择合适的构造函数。
五、访问局部变量
我们可以直接在lambda表达式中直接访问外层中的局部变量,可以不用向匿名内部类一样,给变量添加final关键字,但是这个变量必须不可被后面的代码修改(隐形的具有final的语义)。
六、访问对象字段与静态变量
和本地变量不同的是,lambda内部对于实例的字段以及静态变量即可读又可写
七、访问接口的默认方法
一个接口的默认方法可以直接被匿名对象访问到,但是lambda表达式中是不行的。
八、Date API
Clock时钟、Timezones时区、LocalTime本地时间…(具体后续补充)
九、Annotation注解

后续继续补充,如有不对欢迎指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值