JDK1.8新特性lambel表达式
2016-06-07 11:29
447 查看
lambel表达式
lambel表达式是匿名类的简化方式,他只能代替只有一个方法的匿名类,如果存在多个方法,则不能使用lambel表达式
格式: (参数列表)->{语句} 整个语句体相当于 new 类/接口(){ 方法实现 }一起,因此简化很多了.
原来的方式如下:
采用lambel的方式:【不过 lambel不能直接使用,比如】。
(str)->{System.out.println("lambel匿名子类的打印"+str);}
但是编译器无法通过上下文判断语句行为。
如果一个类需要一个接口作为参数的形式,则可以使用lambel表达式,因为上下文语句可以知道这个类需要一个接口参数,就算匿名化也是知道具体行为的
比如:
相当于:
编辑器自动能识别lambel表达式表达一个Runnable的子类
lambel表达式是匿名类的简化方式,他只能代替只有一个方法的匿名类,如果存在多个方法,则不能使用lambel表达式
格式: (参数列表)->{语句} 整个语句体相当于 new 类/接口(){ 方法实现 }一起,因此简化很多了.
原来的方式如下:
interface A{ void print(String str); } public class LambelTest { public static void main(String[] args) { new A(){ @Override public void print(String str) { // TODO Auto-generated method stub System.out.println("匿名子类的打印"+str); } }.print("hello world"); } }
采用lambel的方式:【不过 lambel不能直接使用,比如】。
(str)->{System.out.println("lambel匿名子类的打印"+str);}
但是编译器无法通过上下文判断语句行为。
如果一个类需要一个接口作为参数的形式,则可以使用lambel表达式,因为上下文语句可以知道这个类需要一个接口参数,就算匿名化也是知道具体行为的
比如:
<pre name="code" class="java">new Thread(() -> System.out.println("我用了一行")).start();
相当于:
<pre name="code" class="java">new Thread(new Runnable() { @Override public void run() { System.out.println("我用了6行"); } }).start();
编辑器自动能识别lambel表达式表达一个Runnable的子类
相关文章推荐
- Java版本:图书管理系统
- 使用quartz+spring实现简单的可配置化的定时任务(可和数据库配套使用)
- Java 7 的新特性一览表
- spring mvc出现 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endtime'
- Java 打印数组
- Java抽象类与接口
- java 中文乱码的解决办法!兼容谷歌,IE,FIREFOX(火狐)
- Java Integer
- java程序调用xfire发布的webService服务
- 基于Spring4+Hibernate4的通用数据访问层+业务逻辑层(Dao层+Service层)设计与实现!
- Spring 下载地址
- Java多线程初探——守护线程
- java流介绍
- javabean对象自动赋值给另一个javabean对象
- java二维码工具类,中间带LOGO的,很强大
- Java——泛型(最易懂的方式讲解泛型)
- java io的相对路径和绝对路径
- 深入理解Java:注解(Annotation)--注解处理器
- Java基础教程_判断语句if else
- eclipse中启动Genymotion模拟器的错误