java1.8新特性
作者:互联网
java1.8新特性
函数式编程
提供的接口的抽象方法的实现类
接口:函数式接口
java.util.function.xxxxx
Predicate: boolean test() 断言 判断逻辑
Consumer : accept(T t) 消费 通过提供一个对象 --》代码处理
Function: R apply() 关系函数 k----> v
supplier: T get() 通过代码生产出一个对象
有且只有一个抽象方法
java7.0以来
try-with-resource的资源自动释放等,都给我们带来了很方便的操作和极大的便利。
将流的声明和创建放在try(InputSream in = new FileInputStream(file));
不需要再手动写关流的代码,会自动关流,释放资源。
从以下几个方面来了解java1.8新特性
1. 接口方法
java1.8之前,接口中的方法全都是抽象方法,不能有其他方法,
java1.8以后,接口中可定义默认(default)和静态方法(static),这两种方法都可以有具体实现,
实现该接口的类也可继承这两种方法去直接使用,也可对其进行重写
默认方法存在的两大优势:
1. 可以让接口更优雅的升级,减少使用人员操作的负担
不必随着接口方法增加,从而修改实现代码,因为默认方法在子类中可以不用实现
2. 可以让实现类中省略很多不必要方法的空实现
接口继承和默认方法冲突
1、
如果一个类实现了多个接口,这些接口之间有继承关系,同时还子接口还实现了父接口的默认方法
在该类中调用方法时,类中声明的方法优先级最高,其次是子接口中重写的方法,最后才是父接口的方法
2、
如果一个类实现了多个接口,这些接口中有同名的默认方法,但这些接口并没有继承关系,
在类中调用方法时,必须要用接口名.super.方法名来区分,不然会编译报错
静态方法
在接口的实现类中调用接口的静态方法时必须使用 接口名.静态方法名。
2. lambda表达式
使用lambda表达式可以让代码变得更加简洁,同时确保在java代码中支持函数式编程
表达式格式为:(参数)->{逻辑代码};
1、行为参数化
3. 方法引用
分为 类名::静态方法
对象名::非静态方法
抽方法中提供了对象,此时可通过 类名::非静态方法((对象)非静态方法)
public void main(String[] args){
//此时是利用String类中的静态方法ValueOf来实现相应逻辑,也是一种lambda表达式
A a = String::ValueOf;//实现
//此时调用的是String类中的静态方法ValueOf中的逻辑来实现将int类型的100转为String类型的100
a.test(100);//调用
}
interace A{
String test(int i);
}
4. Stream APIjava1.8新特性
函数式编程
提供的接口的抽象方法的实现类
接口:函数式接口
java.util.function.xxxxx
Predicate: boolean test() 断言 判断逻辑
Consumer : accept(T t) 消费 通过提供一个对象 --》代码处理
Function: R apply() 关系函数 k----> v
supplier: T get() 通过代码生产出一个对象
有且只有一个抽象方法
java7.0以来
try-with-resource的资源自动释放等,都给我们带来了很方便的操作和极大的便利。
将流的声明和创建放在try(InputSream in = new FileInputStream(file));
不需要再手动写关流的代码,会自动关流,释放资源。
从以下几个方面来了解java1.8新特性
1. 接口方法
java1.8之前,接口中的方法全都是抽象方法,不能有其他方法,
java1.8以后,接口中可定义默认(default)和静态方法(static),这两种方法都可以有具体实现,
实现该接口的类也可继承这两种方法去直接使用,也可对其进行重写
默认方法存在的两大优势:
1. 可以让接口更优雅的升级,减少使用人员操作的负担
不必随着接口方法增加,从而修改实现代码,因为默认方法在子类中可以不用实现
2. 可以让实现类中省略很多不必要方法的空实现
接口继承和默认方法冲突
1、
如果一个类实现了多个接口,这些接口之间有继承关系,同时还子接口还实现了父接口的默认方法
在该类中调用方法时,类中声明的方法优先级最高,其次是子接口中重写的方法,最后才是父接口的方法
2、
如果一个类实现了多个接口,这些接口中有同名的默认方法,但这些接口并没有继承关系,
在类中调用方法时,必须要用接口名.super.方法名来区分,不然会编译报错
静态方法
在接口的实现类中调用接口的静态方法时必须使用 接口名.静态方法名。
2. lambda表达式
使用lambda表达式可以让代码变得更加简洁,同时确保在java代码中支持函数式编程
表达式格式为:(参数)->{逻辑代码};
1、行为参数化
3. 方法引用
分为 类名::静态方法
对象名::非静态方法
抽方法中提供了对象,此时可通过 类名::非静态方法((对象)非静态方法)
public void main(String[] args){
//此时是利用String类中的静态方法ValueOf来实现相应逻辑,也是一种lambda表达式
A a = String::ValueOf;//实现
//此时调用的是String类中的静态方法ValueOf中的逻辑来实现将int类型的100转为String类型的100
a.test(100);//调用
}
interace A{
String test(int i);
}
4. Stream API
标签:静态方法,String,java1.8,接口,实现,特性,方法,类中 来源: https://blog.csdn.net/weixin_59991949/article/details/120370533