java将对象转换为List <sometype>

时间:2018-10-04 13:36:54

标签: 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]警告。

1 个答案:

答案 0 :(得分:5)

一个简单的演员表无法实现您想要做的事情。这与Java代码编译期间的类型擦除有关。您可以执行以下两项操作之一:

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