猿问

将泛型用于类似方法

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


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());

}


梵蒂冈之花
浏览 128回答 1
1回答

慕容708150

您可以分别传递映射器:private <T> List<T> extract(List<String> list, Function<String, T> mapper) {&nbsp; &nbsp; return list.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.map(mapper)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.collect(Collectors.toList());}List<Event> r1 = extract(eventList, Event::new);List<Hotel> r2 = extract(hotelList, Hotel::new);
随时随地看视频慕课网APP

相关分类

Java
我要回答