Ich denke, viele Leute verwenden Java-Lambda-Ausdrücke in der Stream-API. Lambda-Ausdrücke können nicht nur für die in Java8 neu hinzugefügten Schnittstellen wie Consumer und Function verwendet werden. Lambda-Ausdrücke können mit funktionaler Schnittstelle verwendet werden. Und die Schnittstelle, in der in Java nur eine Methode definiert ist, ist eine funktionale Schnittstelle.
Schauen Sie sich beispielsweise den ResultSetExtractor
T extractData(ResultSet rs)
Daher wurde bis zu Java7 der Code wie folgt geschrieben
Entity entity = jdbc.query(sql,new ResultSetExtractor<Entity>() {
@Override
public Entity extractData(ResultSet rs) throws SQLException,
DataAccessException {
if(!rs.next()){
return null;
}else{
Entity result = new Entity();
//setValue from resultSet
return result;
}
});
});
Sie können wie folgt schreiben.
Entity entity = jdbc.query(sql, rs -> {
if(!rs.next()){
return null;
}else{
Entity result = new Entity();
//setValue from resultSet
return result;
}
}
});
Es ist sehr erfrischend. Wenn Sie jedoch nicht daran gewöhnt sind, wissen Sie möglicherweise nicht, welche Art von anonymer Klasse Sie machen. Dies kann von der Teamsituation abhängen.