【发布时间】:2025-12-14 11:35:01
【问题描述】:
interface TypeConverter<T, E> {
T convert(E e);
}
class CollectionUtil() {
public static <E> List<T> convertToList(List<E> fromList, TypeConverter<T, E> conv) {
{
if(fromList== null) return null;
List<T> newList = new ArrayList<T>(fromList.size())
for(E e : fromList)
{
newList.add(conv.convert(e));
}
return newList;
}
}
上面的代码解释了通过实现 String、Integer 的 TypeConverter 接口从 String 列表转换为 Integer 列表。任何 API(如要设置的列表等)中是否已经存在任何集合转换实用程序方法?
【问题讨论】:
-
Guava has one。相关/欺骗问题:*.com/questions/18524/…
-
这样的转换是不安全的。所以它们不能成为 Java API 的一部分
-
@AmitD:我看不出它们不安全有什么意义。在显示的代码中没有显式转换,这意味着由于强大的静态类型检查器,在运行时不会引发类型错误。
-
@Jack 在我看来
TypeConverter是不安全的,因为在某些时候,开发人员会将值从一种类型“转换”为另一种类型,从而产生ClassCastExceptions。 -
@AmitD:如果 TypeConverter 在参数和返回值上都是通用的并且不使用强制转换,我不明白这怎么可能。使用您的假设,整个 Java 语言是不安全的,因为在某些时候您总是可以进行类型转换:) 只有一种禁止类型转换的语言本质上是安全的。你说开发者会,我说开发者可能,但在任何地方都是如此。
标签: java generics collections