java8 语言特性
2020-12-13 04:56
标签:rip 语句 merge 子类 empty 静态 nali class end 方法引用是指可以使用 可以使用在下面的方法上: 是为了保持向后兼容性, 能够让旧的接口可以使用 java8 提供的 lamda 功能. 如果一个类继承了两个具有相同默认方法的接口, 则可以通过下面方式消除二义性 接口允许有静态默认方法 难以处理时区: 需要编写大量代码处理时区问题. 新的API在 Period 处理基于日期的 java8 语言特性 标签:rip 语句 merge 子类 empty 静态 nali class end 原文地址:https://www.cnblogs.com/walkinhalo/p/11125727.htmlLamda 表达式
@FunctionalInterface
interface MathOperation{
int operation(int a,int b);
}
MathOperation addition = (int a , int b)-> a+b;
MathOperation subtraction = (a,b)->a-b;
方法引用
::
符号来通过名称引用方法.
Array::new
List
默认方法
public class car implements vehicle, fourWheeler {
default void print() {
vehicle.super.print();
}
}
Streams API
生成 Streams
stream()
parallelStream()
forEach
forEach
Random random = new Random();
random.ints().limit(10).forEach(System.out::println);
map
List
filter
limit
sorted
Collectors
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
Statistics
IntSummaryStatistics stats = numbers.stream().mapToInt(x->x).summaryStatistics();
System.out.println(stats.getMax());
System.out.println(stats.getSum());
System.out.println(stats.getAverage()
Optional
public static void main(String[] args) {
Integer value1 = null;
Integer value2 = new Integer(10);
Optional
Nashorn Javascript
日期/时间 API
旧 API 的缺陷
Date
不是线程安全的, 而新的 API 是非可变的因此是线程安全的java.time
包下提供了两个类: Local
以及 Zoned
.LocalDate, LocalTime , LocalDateTime
ZoneDateTime , ZoneId
Period, Duration
Duration 处理基于时间的Temporal 适配
TemporalAdjusters
类有大量辅助方法向后兼容
Date
和 Calendar
新增的 toInstant()
方法可以将其转化为新的对象.Instant instance = data.toInstant();
ZoneId current = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instance, currentZone);
Base64
面试题
使用Lamda为 String 的list排序?
Collections.sort(names,(s1,s2)->s1.compareTo(s2));