使用反射获取list或Collection的数据类型作为方法参数

时间:2014-07-15 10:44:14

标签: java reflection collections generic-programming

我必须创建一个具有如下内容的方法:

 public void anyMethod(List<?> dataList){
      for (Iterator<?> it = dataList.iterator(); it.hasNext();) {
           Object p = it.next();
           if(p instanceOf XYZ){
               //do something
           }

           if(p instanceOf MNO){
               //do something
           }
      }
 }

现在不是逐个获取每个条目,然后每次检查它是否是任何类的实例,是否有任何方法可以在委托循环之前找到列表元素的数据类型,而无需使用反射从列表中获取任何元素。我的列表包含相同日期类型的元素。例如,它可以是List或List等,但是bot是combine数据类型。 谢谢

1 个答案:

答案 0 :(得分:0)

在Java中,有无法来获取泛型声明的使用类型,在您的情况下,您可以通过获取列表的第一个元素来实现您所需的内容:

if(dataList.size()>0) {
   Object p = dataList.get(0);

  if(p instanceOf XYZ){
               //do something
  }

  if(p instanceOf MNO){
           //do something
  }

}