Java中的双冒号::是什么玩意?有这个语法?
简洁
方法引用
Optional 可选值
一:简洁
方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式
静态方法引用,通过类名::静态方法名, 如 Integer::parseInt
实例方法引用,通过实例对象::实例方法,如 str::substring
构造方法引用,通过类名::new, 如 User::new
二:方法引用
public final class Integer
{
public static int parseInt(String s) throws NumberFormatException
{
return parseInt(s,10);
}
}
通过方法引用,可以将方法的引用赋值给一个变量,通过赋值给Function,说明方法引用也是一种函数式接口的书写方式,Lambda表达式也是一种函数式接口,Lambda表达式一般用于自己提供方法体,而方法引用一般直接引用现成的方法。
public class User
{
private String username;
private Integer age;
public User()
{
}
public User(String username, Integer age)
{
this.username = username;
this.age = age;
}
@Override
public String toString()
{
return “User{” + “username='” + username + ‘’’ + “, age=” + age + ‘}’;
}
// Getter&Setter
}
public static void main(String[] args)
{
// 使用双冒号::来构造静态函数引用
Function<String, Integer> fun = Integer::parseInt;
Integer value = fun.apply(“123”);
System.out.prin