全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

java方法引用是什么

发布时间:2022-08-10 15:17:36
发布人:qyf

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万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

数据库的搭建过程是什么样的?

数据库的搭建过程是什么样的?

2023-10-14
oracle存储过程怎么写?

oracle存储过程怎么写?

2023-10-14
IT通常说的平台是什么意思?

IT通常说的平台是什么意思?

2023-10-14
结构化数据的相似度怎么计算?

结构化数据的相似度怎么计算?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取