【发布时间】:2018-12-26 03:29:18
【问题描述】:
我想知道是否有现成的解决方案,将原始集合(List、Set 等)转换为通用集合(List、Set 等)。我已经为它写了自己的自行车:
public <T> List<T> filterInstancesOfClass(List list, Class<T> clazz) {
List<T> generifiedList = new ArrayList<T>();
for (Object o : list) {
if (clazz.isInstance(o)) {
generifiedList.add(clazz.cast(o));
}
}
return generifiedList;
}
但我敢肯定,在流行的库中应该有现成的解决方案,可以与集合(Apache、Guava)一起使用。你认识一个吗?
UPD。不幸的是,我不能使用 Java 8,所以我正在寻找 JDK 之外的现成解决方案。
【问题讨论】:
-
使用 Streams API 会更优雅。它不会转换任何东西,但会过滤。
-
如果只是为了“打字”,为什么需要这个逻辑?你可以投。循环中的代码除了检查
clazz是否与集合中的每个条目兼容之外什么都不做。但这不仅仅是“类型转换”
标签: java apache collections guava apache-commons