JDK8新特性PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JDK8新特性
Oracle2014年3月发布了Java 8正式版,它是 java的一个里程牌版本,带来了诸多新特性。
官网介绍:
一、针对java编程语言(Java Programming Language) 二、针对集合(Collections) 三、Compact Profiles 四、安全性 五、JavaFX
•语法如下: 1. 方法体为表达式,该表达式的值作为返回值返回。
Lambda和匿名内部类
匿名表示法
button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.print(“这是内部类的表示法!"); }
•在 Java 8 之前:匿名内部类,监听器和事件处理器的使用都显 得很冗长,代码可读 性很差。
•在 Java 8:Lambda 表达式的应用则使代码变得更加紧凑,可读 性增强; Lambda 表达式使并行 操作大集合变得很方便,可以充分 发挥多核 CPU 的优势,更易于为多核处理器编写代码;
• Lambda 表达式由三个部分组成:第一部分为一个括号内用逗号 分隔的形式参数,参数是函数式接口里面方法的参数;第二部分为 一个箭头符号:->; 第三部分为方法体,可以是表达式和代码块。
@FunctionalInterface
public interface Runnable { public abstract void run();
}
Lambda表达式
•函数式接口的重要属性是:我们能Байду номын сангаас使用 Lambda 实例化它们, Lambda 表达式实例化函数接口作为方法参数,或者将代码作为数 据对待。
•比中:
public interface MyInterface {
default void myMethod() {
System.out.println("MyInterface");
}
}
重复注解
•重复注解:允许在同一声明或类型(类,属性,或方法)的使 用中多次使用同一个注解
@Repeatable(Authorities.class) public @interface Authority { String role(); }
});
•Lambada表示法
button.addActionListener( (ActionEvent e)-> System.out.print("Helllo Lambda in actionPerformed")
);
Lambda举例
// 类型声明
MathOperation<Integer, Integer> addition = (Integer a,Integer b) > a + b;
函数式接口
Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。 接口定义个唯一一个抽象方法, 那么这个接口就成为函数式接口。 同时,引入了一个新的注解:@FunctionalInterface。可以把他它放 在一个接口前,表示这个接口是一个函数式接口。这个注解是非 必须的,只要接 口只包含一个方法的接口,虚拟机会自动判断, 不过最好在接口上使用注解 @FunctionalInterface 进行声明。
java编程语言
(Java Programming Language)
1:lambda表达式:一种新的语言特性,能够把函数作为方法的 参数或将代码作为数据。lambda表达式使你在表示函数接口 (具有单个方法的接口)的实例更加紧凑。
2.方法引用 是lambda表达式的一个简化写法,所引用的方法其 实是lambda表达式的方法体实现,这样使代码更容易阅读
// 不用类型声明
MathOperation<Integer, Integer> subtraction = (a, b) -> a - b; // 大括号中的返回语句
MathOperation<Long, Long> multiplication = (a, b) -> {return a * b;}; // 没有大括号及返回语句
MathOperation<Float,Float> division = (Float a, Float b) -> a / b;
方法引用
是lambda表达式的一个简化写法,所引用的方法其实是lambda表 达式的方法体实现: List<String> names = Arrays.asList("zhangsan", "lisi", "wangwu", "zhaoliu"); Collections.sort(names, String::compareTo); Function<Integer, String> f1 = String::valueOf;
3.默认方法:Java 8引入default method,或者叫virtual extension method,目的是为了让接口可以事后添加新方法而无 需强迫所有实现该接口的类都提供新方法的实现。也就是说它 的主要使用场景可能会涉及代码演进。
4.重复注解:允许在同一声明或类型(类,属性,或方法)的使
public @interface Authorities { Authority[] value(); }
public class RepeatAnnotationUseNewVersion { @Authority(role="Admin") @Authority(role="Manager") public void doSomeThing(){ }
Function<String,String> function = String::new; Supplier<String> supplier = String::new;
默认方法
•Java 8引入default method,或者叫virtual extension method, 目的是为了让接口可以添加新方法的实现,而无需强迫所有实 现该接口的类都提供新方法的实现。
Oracle2014年3月发布了Java 8正式版,它是 java的一个里程牌版本,带来了诸多新特性。
官网介绍:
一、针对java编程语言(Java Programming Language) 二、针对集合(Collections) 三、Compact Profiles 四、安全性 五、JavaFX
•语法如下: 1. 方法体为表达式,该表达式的值作为返回值返回。
Lambda和匿名内部类
匿名表示法
button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.print(“这是内部类的表示法!"); }
•在 Java 8 之前:匿名内部类,监听器和事件处理器的使用都显 得很冗长,代码可读 性很差。
•在 Java 8:Lambda 表达式的应用则使代码变得更加紧凑,可读 性增强; Lambda 表达式使并行 操作大集合变得很方便,可以充分 发挥多核 CPU 的优势,更易于为多核处理器编写代码;
• Lambda 表达式由三个部分组成:第一部分为一个括号内用逗号 分隔的形式参数,参数是函数式接口里面方法的参数;第二部分为 一个箭头符号:->; 第三部分为方法体,可以是表达式和代码块。
@FunctionalInterface
public interface Runnable { public abstract void run();
}
Lambda表达式
•函数式接口的重要属性是:我们能Байду номын сангаас使用 Lambda 实例化它们, Lambda 表达式实例化函数接口作为方法参数,或者将代码作为数 据对待。
•比中:
public interface MyInterface {
default void myMethod() {
System.out.println("MyInterface");
}
}
重复注解
•重复注解:允许在同一声明或类型(类,属性,或方法)的使 用中多次使用同一个注解
@Repeatable(Authorities.class) public @interface Authority { String role(); }
});
•Lambada表示法
button.addActionListener( (ActionEvent e)-> System.out.print("Helllo Lambda in actionPerformed")
);
Lambda举例
// 类型声明
MathOperation<Integer, Integer> addition = (Integer a,Integer b) > a + b;
函数式接口
Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。 接口定义个唯一一个抽象方法, 那么这个接口就成为函数式接口。 同时,引入了一个新的注解:@FunctionalInterface。可以把他它放 在一个接口前,表示这个接口是一个函数式接口。这个注解是非 必须的,只要接 口只包含一个方法的接口,虚拟机会自动判断, 不过最好在接口上使用注解 @FunctionalInterface 进行声明。
java编程语言
(Java Programming Language)
1:lambda表达式:一种新的语言特性,能够把函数作为方法的 参数或将代码作为数据。lambda表达式使你在表示函数接口 (具有单个方法的接口)的实例更加紧凑。
2.方法引用 是lambda表达式的一个简化写法,所引用的方法其 实是lambda表达式的方法体实现,这样使代码更容易阅读
// 不用类型声明
MathOperation<Integer, Integer> subtraction = (a, b) -> a - b; // 大括号中的返回语句
MathOperation<Long, Long> multiplication = (a, b) -> {return a * b;}; // 没有大括号及返回语句
MathOperation<Float,Float> division = (Float a, Float b) -> a / b;
方法引用
是lambda表达式的一个简化写法,所引用的方法其实是lambda表 达式的方法体实现: List<String> names = Arrays.asList("zhangsan", "lisi", "wangwu", "zhaoliu"); Collections.sort(names, String::compareTo); Function<Integer, String> f1 = String::valueOf;
3.默认方法:Java 8引入default method,或者叫virtual extension method,目的是为了让接口可以事后添加新方法而无 需强迫所有实现该接口的类都提供新方法的实现。也就是说它 的主要使用场景可能会涉及代码演进。
4.重复注解:允许在同一声明或类型(类,属性,或方法)的使
public @interface Authorities { Authority[] value(); }
public class RepeatAnnotationUseNewVersion { @Authority(role="Admin") @Authority(role="Manager") public void doSomeThing(){ }
Function<String,String> function = String::new; Supplier<String> supplier = String::new;
默认方法
•Java 8引入default method,或者叫virtual extension method, 目的是为了让接口可以添加新方法的实现,而无需强迫所有实 现该接口的类都提供新方法的实现。