1. 首先定義一個Person類,并且生成set get 方法;
public void test1(){
List <Person> list = new ArrayList<>();
list.add(new Person(1,"adf1"));
list.add(new Person(2,"adf2"));
list.add(new Person(3,"adf3"));
list.stream()
.map(Person::getAge);
list.stream()
.map((person -> person.getAge()));
}
為什么可以通過Person::getAge 這種方式直接參考? get方法不是靜態方法;??
成員方法應該通過下面的方式去呼叫person -> person.getAge()
這是為什么
uj5u.com熱心網友回復:
人家語法就是這么定的具體你可以參考以下,方法參考的幾種方式
https://segmentfault.com/a/1190000012269548
uj5u.com熱心網友回復:
類名::方法,不是指適合靜態方法?
uj5u.com熱心網友回復:
類名::方法名 這種形式應該試用于靜態方法吧
uj5u.com熱心網友回復:
不是啊。只要引數串列相同且回傳值相同就可以。
uj5u.com熱心網友回復:
你點進map()進去你會發現 ,方法需要傳入的是 Function
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
......
}
只要符合 有入參,有回傳值的方法均可
類名::方法名 的格式可以理解為一個指向某方法的指標,可以根據它找到需要的方法
map的回傳值是Stream ,你點進去某個實作類會發現 ,你呼叫完map方法后 ,stream并不會立即呼叫 ,只是將你傳入的"方法指標"儲存起來
當你呼叫 stream的reduce ,collect這種終結方法時,它會按照順序 ,找到你之前傳入的方法 ,然后使用這個方法對所有元素進行處理
大概就是這樣一個程序吧,去看下流相關的實作類就能明白了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86162.html
標籤:Java相關
上一篇:java學習路線
下一篇:JAVA結合AE(Adobe After Effects)實作類似于傳影(視頻DIY)的核心功能,程式也可以是藝術。
