Java 转换实用程序库

标签 java generics casting unsafe

我想知道是否存在一个库来执行一堆平凡的转换(基本上是一个包装器,围绕着一堆可能不安全的转换,在大多数情况下,这在实践中不是问题)。例如,假设我在库中有以下内容(为简洁起见省略了正文):

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/

相关文章:

java - class.getAnnotation 和 getAnnotations 不能正常工作

java - 发送命令后建立套接字连接等待响应

typescript 通用 promise 返回类型

java - Java 中的泛型问题

c# - 编译器将显式转换为我自己的类型替换为显式转换为 .NET 类型?

Java通用二进制搜索树类型问题

java - 我的按钮第一次可以计算方程式,但在编辑文本字段中输入新数字后第二次就不行了

java - 配置 Velocity 以读取类路径之外的模板文件

java - 未经检查的 Actor : Map Output is firing unchecked cast warning

c# - XML 序列化小巧的结果