[英]Java - method reference for setter and getter
寶卓class:
package com.lambda.jay;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
另一個 class 用於啟動“Person”對象:
package com.fi.lambda.jay;
import java.util.function.BiConsumer;
import java.util.function.Function;
public class Actor {
public <T,R> void printField(T obj, Function<? super T,? extends R> getter1) {
System.out.println(getter1.apply(obj).toString());
}
public <T,R> void setField(T obj, R value, BiConsumer<T, R> setter) {
setter.accept(obj, value);
}
public static void main(String[] args) {
Person person = new Person();
Actor actor = new Actor();
actor.setField(person, "Bob", Person::setName);// (a,b) -> a.setB(b);
actor.printField(person, Person::getName);
}
}
請幫助我理解以上兩種解釋。
確切地說,一個BiConsumer
消費了 2 樣東西。 [A] Person
class 的一個實例,以及 [B] 要設置的name
字段的值。
是的。 輸入是Person
的一個實例,output 是那個人的名字。
關鍵的實現是getter
lambda 表示 getter 本身,沒有與之關聯的實際人員實例。 如果你確實想要,你可以; 類似somePersonInstance::getName
的東西是Producer
(不接受輸入並提供輸出),而類似Person::getName
的東西是 Function,需要 1 個Person
實例並提供 output。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.