java 将对象转换为列表<SomeType>

标签 java

我有一些功能需要 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 代码编译期间的类型删除有关。您可以执行以下两项操作之一:

  1. 转换并接受未经检查的警告(您可以通过在方法上添加@SuppressWarning 来抑制它)。仅当您确定 Object 是实际的 List 类型时才执行此操作,否则您将在运行时获得 ClassCastExceptions。
  2. 根据 List 检查变量的类型,然后迭代它,将每个条目添加到类型 T 的新列表中。然后,您可以在添加之前根据类型 T 验证原始列表中的每个条目。 (不这样做也会导致未经检查的警告)

关于java 将对象转换为列表<SomeType>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648161/

相关文章:

java - JAXB 将属性添加到简单数据类型的 XmlElement

java.lang.RuntimeException : com. google.gdata.client.authn.oauth.OAuthException:oauth_token_secret 不存在

java - 使用 slf4j 实现自定义记录器

java - 动画关键帧导致的零除异常(LIBGDX)

java - 公历月份

java - 如何在 Java 的 PostgreSQL 中插入 XML 文档?

java - GWT 网络应用程序 : How to maintian logged in state?

java - 在OOP中,写子类的时候是不是要改掉原来的main方法代码?什么代替?

java - 回车换行 Windows 和 Linux java 应用程序

java - 创建文件时为 8192 字节