2011-05-17 105 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

相關問題