메서드에 대한 참조를 매개 변수로 전달할 수 있습니까? 예를 들어함수 참조를 매개 변수로 전달
:
public static void main(String[] args) {
String data = "name: John, random text, address: leetStreet";
Person person;
//if regex matches, use method reference, to send the result.
applyDataToPerson(data, "name: (\\w+)", person, Person::setName);
applyDataToPerson(data, "address: (\\w+)", person, Person::setAddress);
}
private static void applyDataToPerson(String data, String regex, Person person,
Function<Person> f) {
Matcher match = Pattern.compile(regex).matcher(data);
if (match.matches()) person.f(match.group(1));
}
class Person {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
}
그렇지 않다면, 방법에 대한 참조를 제공하는 대안이 될 것입니다 무슨? 스위치 케이스 구조?
을 기존 메소드 (다른 것들 중에서)에 [메소드 참조] (https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html)를 전달할 수 있습니다. – Tibrogargan
@Tibrogargan 메소드 서명은 어떻게 생겼습니까? 'Comparator super T>'는 나에게 의미가 없습니다. – JasperJ
'Function'은 무엇을 나타낼 것입니까? 우리가 ['java.util.function.Function'] (https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html)에 대해 말하면, 2 1. generic이 아닌 코드는 ... ('person.f (...)'는 말할 것도없고) ...로 시작하도록 컴파일 할 수 없습니다. _alternatives_를 요청하기 전에 작업 코드가 있는지 확인하십시오 ... –
Tunaki