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