千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > java方法引用是什么

java方法引用是什么

来源:千锋教育
发布人:qyf
时间: 2022-08-10 15:17:36 1660115856

java方法引用是什么

  1、说明

  方法引用可以看作是Lambda表达式的深层表达。换句话说,方法引用是Lambda表达式,也就是函数接口的例子,通过方法名称指向方法。

  2、使用场景

  当要传递给 Lambda 体的操作,已经实现的方法了,可以使用方法引用

  3、格式

  类(或对象) :: 方法名

  4、实例

  public class MethodRefTest {

  // 情况一:对象 :: 实例方法

  //Consumer中的void accept(T t)

  //PrintStream中的void println(T t)

  @Test

  public void test1() {

  //使用Lambda表达

  Consumercon1 = str -> System.out.println(str);

  con1.accept("中国");

  System.out.println("====================");

  //使用方法引用

  PrintStream ps = System.out;

  Consumer con2 = ps::println;

  con2.accept("China");

  }

  //Supplier中的T get()

  //Employee中的String getName()

  @Test

  public void test2() {

  //使用Lambda表达

  Employee emp = new Employee(1001, "Bruce", 34, 600);

  Suppliersup1 = () -> emp.getName();

  System.out.println(sup1.get());

  System.out.println("====================");

  //使用方法引用

  Supplier sup2 = emp::getName;

  System.out.println(sup2.get());

  }

  // 情况二:类 :: 静态方法

  //Comparator中的int compare(T t1,T t2)

  //Integer中的int compare(T t1,T t2)

  @Test

  public void test3() {

  //使用Lambda表达

  Comparatorcom1 = (t1, t2) -> Integer.compare(t1, t2);

  System.out.println(com1.compare(32, 45));

  System.out.println("====================");

  //使用方法引用

  Comparatorcom2 = Integer::compareTo;

  System.out.println(com2.compare(43, 34));

  }

  //Function中的R apply(T t)

  //Math中的Long round(Double d)

  @Test

  public void test4() {

  //使用匿名内部类

  Function<double, long=""> func = new Function<double, long="">() {

  @Override

  public Long apply(Double aDouble) {

  return Math.round(aDouble);

  }

  };

  System.out.println(func.apply(10.5));

  System.out.println("====================");

  //使用Lambda表达式

  Function<double, long=""> func1 = d -> Math.round(d);

  System.out.println(func1.apply(12.3));

  System.out.println("====================");

  //使用方法引用

  Function<double, long=""> func2 = Math::round;

  System.out.println(func2.apply(12.6));

  }

  // 情况三:类 :: 实例方法

  // Comparator中的int comapre(T t1,T t2)

  // String中的int t1.compareTo(t2)

  @Test

  public void test5() {

  //使用Lambda表达式

  Comparatorcom1 = (s1, s2) -> s1.compareTo(s2);

  System.out.println(com1.compare("abd", "aba"));

  System.out.println("====================");

  //使用方法引用

  Comparatorcom2 = String::compareTo;

  System.out.println(com2.compare("abd", "abc"));

  }

  //BiPredicate中的boolean test(T t1, T t2);

  //String中的boolean t1.equals(t2)

  @Test

  public void test6() {

  //使用Lambda表达式

  BiPredicate<string, string=""> pre1 = (s1, s2) -> s1.equals(s2);

  System.out.println(pre1.test("abc", "abc"));

  System.out.println("====================");

  //使用方法引用

  BiPredicate<string, string=""> pre2 = String::equals;

  System.out.println(pre2.test("abc", "abd"));

  }

  // Function中的R apply(T t)

  // Employee中的String getName();

  @Test

  public void test7() {

  //使用Lambda表达式

  Employee employee = new Employee(1001, "Tom", 45, 10000);

  Function<employee, string=""> func1 =e->e.getName();

  System.out.println(func1.apply(employee));

  System.out.println("====================");

  //使用方法引用

  Function<employee,string>func2 = Employee::getName;

  System.out.println(func2.apply(employee));

  }

  }

  以上就是java方法引用的介绍,希望对大家有所帮助。更多关于“java培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT