将泛型用于类似方法

时间:2018-07-15 16:35:37

标签: java generics

这两个 Java 方法非常相似,但是我不确定如何重用代码。我尝试创建一个通用对象<T>,但由于构造函数而被禁止。我可以在这里使用泛型吗?还是EventHotel有父母?我不确定是否可以在此处使用接口。

private List<Event> extractEvents(List<String> eventList) {
    return eventList.stream()
                    .map(eventName -> new Event(eventName))
                    .collect(Collectors.toList());
}

private List<Hotel> extractHotels(List<String> hotelList) {
    return hotelList.stream()
                    .map(hotelName -> new Hotel(hotelName))
                    .collect(Collectors.toList());
}

1 个答案:

答案 0 :(得分:10)

您可以分别传递映射器:

foo
private <T> List<T> extract(List<String> list, Function<String, T> mapper) {
    return list.stream()
               .map(mapper)
               .collect(Collectors.toList());
}