博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 8新特性-4 方法引用
阅读量:5307 次
发布时间:2019-06-14

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

  对于引用来说我们一般都是用在对象,而对象引用的特点是:不同的引用对象可以操作同一块内容

  Java 8的方法引用定义了四种格式:

    • 引用静态方法     ClassName :: staticMethodName 
    • 引用对象方法:  Object:: methodName 
    • 引用特定类型方法: ClassName :: methodName 
    • 引用构造方法: ClassName  :: new

 

  • 静态方法引用示例
    • /** *      静态方法引用 * @param 

      引用方法的参数类型 * @param

      引用方法的返回类型 */@FunctionalInterfaceinterface FunStaticRef
      { public R tranTest(P p);}public static void main(String[] args) { /* * 静态方法引用: public static String valueOf * 即将String的valueOf() 方法引用为 FunStaticRef#tranTest 方法 */ FunStaticRef
      funStaticRef = String::valueOf; String str = funStaticRef.tranTest(10000); System.out.println(str.replaceAll("0", "9"));}

       

       

  • 对象方法引用示例
    • /** *   普通方法引用 * @param 
      引用方法返回类型 */@FunctionalInterfaceinterface InstanRef
      { public R upperCase();}public static void main(String[] args) { /* * 普通方法的引用: public String toUpperCase() * */ String str2 = "i see you"; InstanRef
      instanRef = str2 :: toUpperCase; System.out.println(instanRef.upperCase());}

       

  • 特定类型方法引用示例
    •   特定方法的引用较为难理解,本身其引用的是普通方法,但是引用的方式却为: ClassName :: methodName 
    •   
      /** *  特定方法的引用 * @param 

      */@FunctionalInterfaceinterface SpecificMethodRef

      { public int compare(P p1 , P p2);}public static void main(String[] args) { /* * 特定方法的引用 public int compareTo(String anotherString) * 与之前相比,方法引用前不再需要定义对象,而是可以理解为将对象定义在了参数上! */ SpecificMethodRef

      specificMethodRef = String :: compareTo; System.out.println(specificMethodRef.compare("A","B")); ConstructorRef
      constructorRef = Book :: new; Book book = constructorRef.createObject("Java",100.25); System.out.println(book);}

       

  • 构造方法引用示例
    •   
      class Book{    private String title;    private double price;    public Book() {    }    public Book(String title,double price){        this.price = price;        this.title = title;    }    @Override    public String toString() {        return "Book{" +"title='" + title + '\'' +", price=" + price +'}';    }} public static void main(String[] args) {    /*     * 构造方法引用     */    ConstructorRef
      constructorRef = Book :: new; Book book = constructorRef.createObject("Java",100.25); System.out.println(book);}

       

 

     总的来说Java 8一些新的特性在目前做的项目中还未大量使用,但是学习一下,到时也不至于看到这种Java 8新特性的代码而不知所错!

转载于:https://www.cnblogs.com/MPPC/p/5356262.html

你可能感兴趣的文章
spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例
查看>>
LINQ笔记
查看>>
S3C2440中断寄存器
查看>>
html的的归纳点
查看>>
地图经纬度C#和Javascript的压缩以及解压
查看>>
sed对指定行添加或删除注释
查看>>
C#矩形框沿直线移动
查看>>
springboot中访问jsp文件方式
查看>>
树的直径新求法、codeforces 690C3 Brain Network (hard)
查看>>
五子棋游戏SRS文档
查看>>
Hdu 2476 String painter (区间DP)
查看>>
找路径
查看>>
js、jquery获取当前url中各个参数
查看>>
Android webView解析URL参数
查看>>
一个汇编的HelloWorld!
查看>>
文科学生思维与理科学生思维对比
查看>>
一台电脑如何管理多个ssh key
查看>>
C# 定时关机小程序
查看>>
【blog】推荐一个博客系统后台管理模板 - pinghsu
查看>>
说说MySQL索引
查看>>