Ich habe in einer allgemeinen Situation, wo ich eine Liste von Objekten habe und müssen eine Komma getrennte Zeichenfolge mit einer einzigen Eigenschaft, die dann jeweils von einfachen Anführungszeichen umgeben sind generiert .Wie verallgemeinere Dienstprogrammfunktion mit Methodenreferenzen/Java 8
2 Beispiele
public String partIDsToString(List<Part> parts){
StringBuilder sb = new StringBuilder();
for(Part part : parts)
sb.append("'"+part.getPartNumber() + "',");
return sb.substring(0,sb.length()-1);
}
public String companyIDsToString(List<Company> parts){
StringBuilder sb = new StringBuilder();
for(Company c : parts)
sb.append("'"+c.getId() + "',");
return sb.substring(0,sb.length()-1);
}
Ich werde mehr Methoden wie dies in der Zukunft schaffen müssen, und frage mich, ob es eine Möglichkeit, diese Funktionalität zu verallgemeinern war, im für so etwas suchen.
public String objectPropertyToString(List<Object> list, Method getProperty){
StringBuilder sb = new StringBuilder();
for(Object obj: list)
sb.append("'"+obj.getProperty() + "',");
return sb.substring(0,sb.length()-1);
}
List<Company> companies = getCompaniesList();//not important
String result = objectPropertyToString(companies , Company::getId);
List<Part> parts= getPartsList();//not important
String result = objectPropertyToString(parts, Part::getPartNumber);
Kann dies mit Methodenreferenzen/Lambdas oder auf andere Weise geschehen?
Danke, das ist genau das, was ich suchte. –
Es macht keinen Sinn, 'f :: apply' zu verwenden; Damit erstellen Sie eine neue 'Funktion', deren 'apply'-Methode die' apply'-Methode der anderen 'Funktion' aufruft. Verwenden Sie einfach 'f' hier. – Holger
Duh, danke @Holger –