博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
retrolambda的使用
阅读量:6378 次
发布时间:2019-06-23

本文共 2408 字,大约阅读时间需要 8 分钟。

hot3.png

 

1.环境的配置:

https://github.com/evant/gradle-retrolambda

2.JAVA8 新特性

2.1接口的默认方法和静态方法 

8允许我们给接口添加一个默认方法,用default修饰即可。默认方法可以重写。

在Android中要求最低为API24以上

public interface IMyInterface {    void onMethond(String str);//这是一个抽象方法    default String onDefalutMethod(){//这是一个默认方法         return "这是一个默认方法";    }    static String onStaticMethod(){        return "这是一个静态方法";    }}

2、 函数式接口(Functional Interface) 

什么叫函数式接口?他和普通接口有什么区别? 

“函数式接口”是指仅仅只包含一个抽象方法的接口(可以包含默认方法和静态方法),其他特征和普通接口没有任何区别,中Runnalbe,Callable等就是个函数式接口;。我们可以给一个符合函数式接口添加@FunctionalInterface注解,这样就显式的指明该接口是一个函数式接口,如果不是,编译器会直接提示错误。当然你也可以不用添加此注解。添加的好处在于,由于Lambda表达式只支持函数式接口,如果恰好这个接口被应用于Lambda表达式,某天你手抖不小心添加了个抽象方法,编译器会提示错误。

3、方法与构造函数引用 

public class Person {    private String name;    private int age;    public Person(){    }    public Person(String name,int age){        this.name=name;        this.age=age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }   public static String show(String str){        System.out.println("----->输入"+str);        return "----->返回"+str;    }}

下面的例子都会以Person为例

  • 使用::关键字初始化构造函数,返回的是一个函数式接口,这个接口可以自己定义,也可以直接使用系统提供的函数式接口。现在先来定义一个函数式接口用于获取Person实例。
@FunctionalInterfacepublic interface PersonSupply {    Person get();}

接下来写一个接口的实现,如果按照常规写法,写出来的代码一般会是如下形式。

PersonSupply sp=new PersonSupply{  public Person get(){      Person person=new Person();      return person;  }}Person person=sp.get();//获取实例

而自从Java8引入::关键字后,就可以简化为一行代码,简直不要太简洁。

PersonSupply sp=Person::new; //接口实现Person person=sp.get();//获取实例

当然为了使这个接口更通用,我们可以定义成如下形式

@FunctionalInterfacepublic interface PersonSupply
{ T get();}PersonSupply
sp=Person::new;Person person=sp.get();

java8自带的Supplier接口就是这样实现的,后面会做介绍。直接使用Supplier如下

Supplier
sp=Person::new;Person person=sp.get();

这种简便写法同样支持带参构造函数,首先写一个函数式接口,由于需要参数所以get()里面输入参数,返回Person,如下。

@FunctionalInterfacepublic interface PersonSupply

{ P get(String name, int age);}

常规的写法: 

PersonSupply
sp=new PersonSupply
{ public Person get(String name, int age);{ Person person=new Person(name,age); return person; }}Person person=sp.get("maplejaw",20);

http://blog.csdn.net/maplejaw_/article/details/51348162

 

 

 

转载于:https://my.oschina.net/quguangle/blog/898022

你可能感兴趣的文章
vn.py 2.0 正式版发布,全功能交易程序开发框架
查看>>
Elasticsearch Scroll分页检索案例分享
查看>>
ROM包制作
查看>>
在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图
查看>>
React中的模式对话框
查看>>
机器学习 vs. 深度学习
查看>>
[Git]Git指南一 查看创建删除标签
查看>>
使用Maven运行Java main的方法(转)
查看>>
NIO通道(channel)原理与获取
查看>>
Linux下Shell去除空行的方法
查看>>
台式机的集显HD4600驱动-黑苹果之路
查看>>
如何正确理解云时代的ERP?必须搞懂这五点
查看>>
当量子计算遇上人工智能
查看>>
Mac安装IntelliJ IDEA时快捷键冲突设置
查看>>
postgresql 字符集server_encoding变更
查看>>
SMS短信PDU编码
查看>>
美国著名的点评网站Yelp借助Splunk让数据更加大众化
查看>>
InnoDB的Named File Formats
查看>>
蜕变成蝶~Linux设备驱动之DMA
查看>>
Working with labelled Data
查看>>