import java.util.Collection;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Converter<T,U> {
private final Function<T,U> fromEntity;
public Converter(Function<T, U> fromEntity) {
this.fromEntity = fromEntity;
}
public U convertFromEntity(T t) {
return fromEntity.apply(t);
}
public List<U> convertFromEntities(Collection<T> tCollection) {
return tCollection.stream().map(fromEntity).collect(Collectors.toList());
}
}
import java.util.function.Function;
public class UserConverter extends Converter<User, UserDto> {
public UserConverter(Function<User, UserDto> fromEntity) {
super(UserConverter::createUserDTOFromEntity);
}
private static UserDto createUserDTOFromEntity(User user) {
return new UserDto(user.getId(), user.getName());
}
}