我有一些功能需要 List<SomeType>
我有一个对象,我知道它应该是 ArrayList<SomeType>
类型.
我如何测试它是否真的存在以及如何在不收到警告的情况下将对象转换为该类型?
类似于:
ArrayList<String> testL = new ArrayList<String>();
Object o = testL;
if (o instanceof ArrayList<String>){
List<String> l = (ArrayList<String>)o;
}
instanceof
检查给出错误,类型转换给出 [unchecked]
警告。
最佳答案
您尝试做的事情无法通过一次简单的转换来实现。这与 Java 代码编译期间的类型删除有关。您可以执行以下两项操作之一:
- 转换并接受未经检查的警告(您可以通过在方法上添加@SuppressWarning 来抑制它)。仅当您确定 Object 是实际的 List 类型时才执行此操作,否则您将在运行时获得 ClassCastExceptions。
- 根据 List 检查变量的类型,然后迭代它,将每个条目添加到类型 T 的新列表中。然后,您可以在添加之前根据类型 T 验证原始列表中的每个条目。 (不这样做也会导致未经检查的警告)
关于java 将对象转换为列表<SomeType>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648161/