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