如何将动态数组类传递给vararg?

时间:2011-05-17 18:00:16

标签: java

我想创建一个动态数组类来传递给vararg。这可能吗?如果没有,动态创建正常的类数组的最佳方法是什么?下面的代码给出了后面的错误。

代码 -

private void validate(Validator vt, Object form, BindingResult errors, Class<?>... c){
    vt.validate(form, c);   
}

private void validate(Type type, BindingResult errors){         

Validator vt = new Validator();
List groups = new ArrayList();

   if(form.isAvailable()){      
          groups.add(Available.class);
   }
       if(form.isNotAvailable()){
          groups.add(NotAvailable.class);
   }    
   if(groups.size()>0){
      validate(vt, form, errors, groups.toArray());
   }      
}

错误 -

The method validate(Validator, Object, BindingResult, Class<?>...) is not applicable for the arguments (Validator, Field, BindingResult, Object[])

3 个答案:

答案 0 :(得分:2)

List.toArray()返回的数组是Object [],无法强制转换为Class []。请尝试使用这样的List.toArray(T[])groups.toArray(new Class<?>[groups.size()]),它应该返回您正在寻找的数组类型。

答案 1 :(得分:1)

尝试将List和ArrayList参数化为

  

列表与LT;类&LT; ? &GT; &GT; groups = new   的ArrayList&LT;类&LT; ? &GT; &GT;();

同样,在转换为数组时,请使用:

  

groups.toArray(new Class [   groups.size()]);

答案 2 :(得分:0)

就这样做

private void validate(ValidationTool vt, Object form, BindingResult errors, Class[] c){
    vt.validate(form, c);   
}