函数式接口之方法引用
Posted 技术很low的瓜贼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式接口之方法引用相关的知识,希望对你有一定的参考价值。
文章目录
JAVA新特性的方法引用
- 方法引用主要指通过方法的名字来指向一个方法而不需要为方法引用提供方法体,该方法的调用交给函数式接口执行
- 方法引用是在特定场景下lambda表达式的一种简化表示,可以进一步简化代码的编写使代码更加紧凑简洁,从而减少冗余代码
- 方法引用使用一对冒号 :: 将类或对象与方法名进行连接
常用使用方式:
- 对象的非静态方法引用
ObjectName :: MethodName
- 类的静态方法引用
ClassName :: StaticMethodName
- 类的非静态方法引用
ClassName :: MethodName
- 构造器的引用
ClassName :: new
- 数组的引用
TypeName[] :: new
代码:
- 实体类:
public class Person
private String name;
private int age;
public Person()
public Person(String name, int age)
this.name = name;
this.age = age;
public void show()
System.out.println("方法引用案例");
@Override
public String toString()
return "Person" +
"name='" + name + '\\'' +
", 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 class 引用
public static void main(String[] args)
// 1.对象的非静态方法引用 ObjectName :: MethodName
Person person = new Person("tb", 21);
Runnable runnable = person::show;
runnable.run();
// 2.类的非静态方法引用 ClassName :: MethodName
// 其中一个参数作为调用对象来调用该方法时,可以使用该引用方式
Comparator<Integer> comparator = Integer::compareTo;
System.out.println(comparator.compare(10, 20));
// 3.类的静态方法引用 ClassName :: StaticMethodName
Function<String, Integer> function = Integer::parseInt;
System.out.println(function.apply("456123") + 5);
// 4.构造器的引用 ClassName :: new
BiFunction<String, Integer, Person> biFunction = Person::new;
System.out.println(biFunction.apply("tbtb", 2121));
// 5.数组的引用 TypeName[] :: new
Function<Integer, int[]> function1 = int[]::new;
System.out.println(Arrays.toString(function1.apply(5)));
以上是关于函数式接口之方法引用的主要内容,如果未能解决你的问题,请参考以下文章
Java8新特性——Lambda表达式之四大核心函数式接口 & 方法/构造器/数组引用
Java8新特性——Lambda表达式之四大核心函数式接口 & 方法/构造器/数组引用