设计模式
模板方法
模板方法(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。明确一部分功能,而另一部分功能不明确。需要延伸到子类中实现
单例模式
目的:单例,让一个类只产生一个对象;
分类:
① 饿汉式
② 懒汉式
饿汉式
懒汉式
Lombok
简化JavaBean开发
- 下载插件
- 导入Jar包
Jar包链接
Lombok通过增加一些“处理程序”,可以让java变得简洁
Lombok能以注解形式简化JavaBean代码,提高开发效率。开发中经常需要写Javabean,都需要去增加对应的getter/setter,构造器、equals等方法,需要维护。
Lombok能通过注解的方式,在编译时自动为属性生成构造器,getter、setter、equals、hashCode、toString方法。
不提供有参构造
JDK新特性
Lambda 表达式
格式:
():重写方法的参数位置
->:将参数传入方法体中
{}:重写方法的方法体
使用
① 必须是函数式接口作方法参数传递
② 有且只有一个抽象方法的接口,用去检测
① 观察是否是函数式接口作方法参数传递
② 调用方法,以匿名内部类的形式传递实参
③ 改造
省略规则
① 重写方法的参数类型可省略
② 重写方法的参数只有一个可省略
③ 方法体中,代码只有一行可省略
④ 方法体中,代码只有一行且,可省略
函数式接口
Supplier
Supplier接口
java.util.function.Supplier< T >接口,它意味着“供给”
方法:
T get() 我们需要什么,get方法就可以返回什么
需求:
使用Supplier接口作为方法的参数
用Lambda表达式求出int数组中的最大值
泛型:
<引用数据类型> 规定了需要操作的数据类型
Consumer
java.util.function.consumer< T > 消费型接口
方法:
void accept(T t),意味着消费一个指定的泛型数据
java se基础
Function
java.util.function.Function< T,R >:接口用来根据一个类型得到另一个类型的数据
方法:
R apply(T t):根据类型T参数获取类型R的结果
Predicate
Stream流
Stream流中的“流”不是特指“IO流”,它是一种“流式编程”(编程方式),可以看做是“流水线”
Stream的获取
① 针对集合,Collection中的方法:
② 针对数组,Stream接口的静态方法:
Stream的方法
forEach
第二个forEach就会报错
Count()
统计元素个数
count也是个终结方法
filter()
limit()
:获取Stream流对象中的前n个元素,返回一个新的Stream流对象
skip
:跳过Stream流对象中的前n个元素,返回一个新的Stream流对象
concat()
:将两个Stream流合并成一个
collect()
从Stream流对象转成集合对象
dinstinct()
map
``Stream< R > map(Function<T , R> mapper):转换流中的数据类型
方法引用
引用方法
使用:
① 被引用的方法要写在重写方法中
② 被引用的方法从参数上,返回值上要和所在重写方法一致,而且引用的方法最好是操作重写方法的参数值的
③ 去除重写方法的,去除 ,去除引用方法的参数,将被引用的方法改成
对象名-引用成员方法
使用对象名引用成员方法
格式:
对象成员方法名
函数式接口:supplier
java.util.function.Supplier< T >接口
抽象方法:
T get(),用来获取一个泛型参数指定类型的对象数据
Supplier接口使用什么泛型,就可以使用get获取一个什么类型的数据
类名-引用静态方法
类-构造引用
类 - 构造方法引用
格式:
构造方法名new
函数式接口:Function
java.util.function.Function< T,R>接口
抽象方法
R apply(T t),根据类型T的参数获取类型R的结果。用于数据类型转换
数组-数组引用
格式:
数组的数据类型[]::new
int [] :: new 创建一个int型的数组
double[] ::new 创建一个double型的数组
JDK8之后的新特性
接口的私有方法
Java8版本接口直接了两类成员:
- 公共的默认方法
- 公共的静态方法
Java9版本接口又新增了一类成员:
- 私有方法:因为有了默认方法和静态方法这样具有具体实现的方法,那么就可能出现多个方法由共同的代码可以抽取,而这些共同的代码抽取出来的方法又只希望在接口内部使用,所以就增加了私有方法。
砖石操作符与匿名内部类结合
自Java9 之后我们将能够与匿名实现类共同使用砖石操作符,即匿名实现类也支持类型自动推断
Java 8 的语言等级编译会报错,Java 9 以上版本才能编译和运行
try…catch升级
try(IO流对象1声明和初始化;IO流对象2声明和初始化){
可能出现异常的代码
}catch(异常类型 对象名){
异常处理方案
}
JDK1.9对trywitch-resources的语法升级了
- 该资源必须实现java.io.closeable接口
- 在try子句中声明并初始化资源对象,也可以直接使用已初始化的资源对象
- 该资源对象必须是final的
IO流对象1 声明和初始化
IO流对象2 声明和初始化
try(IO流对象1,IO流对象2){
可能出现异常的代码
} catch(异常类型 对象名){
异常处理方案
}
局部变量类型自动推断
switch
文本块
instanceof 模式匹配
Record类
密封类
- 密封类用修饰符来修饰
- 使用关键字来指定可以继承或实现该类的类型有哪些
- 一个类继承密封类或实现密封接口,该类必须是修饰的
- sealed修饰的类或接口必须有子类或实现类
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/4047.html