Java: Method Reference

 

  1. 类名::引用实例方法
    Java 类名只能引用静态方法, 类名引用实例方法是 拿第一个参数作为方法的调用者
    复制代码
    import java.util.function.BiFunction;
    import java.util.function.Function;
    
    public class addThen{
      public static void main(String[] args){
        Function<String, Integer> f1 = s -> s.length();
        System.out.println("f1.apply(\"etymology\") = " + f1.apply("etymology"));
    
        Function<String, Integer> f2 = String::length;
        System.out.println("f2.apply(\"etymology\") = " + f2.apply("etymology"));
    
        BiFunction<String, Integer, String> biFunction = String::substring;
        System.out.println("biFunction.apply(\"etymology\",3) = " + biFunction.apply("etymology", 3));
      }
    }
    复制代码

     

  2. 类名::new
    复制代码
    import java.util.function.BiFunction;
    import java.util.function.Supplier;
    
    public class addThen{
      public static void main(String[] args){
        Supplier<Jot> supplier1 = Jot::new;
        System.out.println("supplier1 = " + supplier1.get());
    
        BiFunction<String,Integer,Jot> supplier2=Jot::new;
        System.out.println("\033[37;7m" + supplier2.apply("jot", 55) + "\033[0m");
    
      }
    }
    
    class Jot{
      String name;
      int age;
    
      @Override
      public String toString(){
        final StringBuilder sb = new StringBuilder("Jot{");
        sb.append("name='").append(name).append('\'');
        sb.append(", age=").append(age);
        sb.append('}');
        return sb.toString();
      }
    
      public Jot(){
      }
    
      public Jot(String name, int age){
        this.name = name;
        this.age = age;
      }
    }
    复制代码

     

  3. 数组::new        String[]::new
    复制代码
    public class addThen{
      public static void main(String[] args){
        Function<Integer,String[]> f1=len->new String[len];
        String[] strings = f1.apply(5);
        System.out.println("strings = " + Arrays.toString(strings));
    
        Function<Integer,String[]>  f2=String[]::new;
        String[] strings1 = f2.apply(3);
        System.out.println("strings1 = " + Arrays.toString(strings1));
      }
    }
    复制代码

     

posted @   ascertain  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-05-25 利用chattr限制sudo修改root密码
2020-05-25 九九乘法表-bash
2020-05-25 通过ping探测主机在线状态
2020-05-25 利用RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大者和最小者
点击右上角即可分享
微信分享提示