Java中的"::"符號是Java8新增加的方法引用符號,可以方便地將一個方法作為參數(shù)傳遞給另一個方法。這個符號在Java編程中有著重要的意義,下面我們將從不同的角度對這個符號進行詳細講解。
一、方法引用的3種類型
方法引用用雙冒號(::)表示,它有3種類型:
對象::實例方法 類::靜態(tài)方法 類::實例方法其中,第一種是對象的實例方法引用,第二種是類的靜態(tài)方法引用,第三種是類的某個實例方法的引用。
二、對象::實例方法
對象的實例方法引用格式為:對象::方法名,示例如下:
List list = Arrays.asList("method", "reference", "in", "Java");
list.forEach(System.out::println);
上述代碼中,System.out::println實際上是對System.out.println方法的引用。
三、類::靜態(tài)方法
類的靜態(tài)方法引用格式為:類名::靜態(tài)方法名,示例如下:
List integers = Arrays.asList(1,2,3,4,5);
integers.forEach(Math::abs);
上述代碼中,Math::abs實際上是對Math.abs()方法的引用。
四、類::實例方法
類的實例方法引用是使用的最少的方法,格式為:類名::方法名。其中,這個方法名必須接收一個類名對應(yīng)的對象作為參數(shù),示例如下:
class Person {
String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
List persons = Arrays.asList(new Person("Jack"), new Person("Rose"), new Person("Bob"));
List names = persons.stream()
.map(Person::getName)
.collect(Collectors.toList());
上述代碼中,Person::getName實際上是對Person類中g(shù)etName方法的引用,而getName方法需要調(diào)用Person對象的實例來進行工作。
五、總結(jié)
Java中的"::"符號在方法引用中發(fā)揮了重要作用,方便了開發(fā)者的編程工作。我們通過對不同類型方法引用及其使用場景的解釋,相信您對這個符號的含義已經(jīng)有了更深刻的理解。