2011-05-17 85 views
0

我想创建一个类的动态数组传递给可变参数。这可能吗?如果没有,动态创建一个普通的类数组的最佳方法是什么?下面的代码给出了下面的错误。如何将类的动态数组传递给可变参数?

代码 -

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[]) 
+0

你是怎么称呼它的? – 2011-05-17 18:03:20

回答

1

尝试参数化的列表和ArrayList作为

列表<类<? >> groups = new ArrayList <类<? >>();

也,转换为阵列,使用时:

groups.toArray(新等级[ groups.size()]);

2

通过List.toArray()返回的数组是一个Object [],这是不能被转换为一类[]。尝试使用这样的List.toArray(T[]),而不是:groups.toArray(new Class<?>[groups.size()]),这应该返回您正在寻找的数组类型。

+0

@ Henrick-Gustafsson - 这本身并没有解决问题,但结合这样的参数化实例化 - 列表> groups = new ArrayList >(); - 解决了这个问题。 – coder 2011-05-17 18:15:52

0

只是这样做

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

@ yasser-souri这将解决这个问题,但我有其他地方,需要一个可变类列表的类。 – coder 2011-05-17 18:18:52

相关问题