我想知道是否存在一个库来执行一堆平凡的转换(基本上是一个包装器,围绕着一堆可能不安全的转换,在大多数情况下,这在实践中不是问题)。例如,假设我在库中有以下内容(为简洁起见省略了正文):
public interface LibraryInterface;
public static void doSomething(Collection<LibraryInterface> collection);
所以 doSomething()
固执地只采用比可能的灵 active 低的东西(即 Collection<? extends LibraryInterface>
。是否有一个库提供与以下相同的功能:
public static <T, U extends T> Collection<T> cast(Collection<U> collection);
所以如果我有一个实现 LibraryInterface
的类,我有一个 List<MyLibraryInterfaceImpl>
, 我仍然可以使用 doSomething()
通过列出该列表? (cast()
的主体暗示包含不安全的转换,但至少从用户的角度来看,转换是隐藏的,或者集中在一个地方)。
(也很好,对于像比较器这样的东西做相反的事情)
最佳答案
这样的图书馆是胡说八道。由于类型删除,转换到父类绝对没有任何作用,除了删除编译器警告。此外,图书馆会做的是直接进行类型转换制作或制作馆藏的副本。换句话说,它要么做你不想做的事情并促使你使用这个库,要么做一些非常低效和无用的事情......
如果您想在进行不安全转换之前检查集合的内容,则向下转换更有意义。您可以创建一个函数来遍历集合以检查所有元素的类型,然后通过执行不安全的转换返回集合。您可以在 ~3 行内编写此函数;)。
关于Java 转换实用程序库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13486949/