2013-02-15 57 views
0

方法寫在Java中,如模板我想實現與簽名不確定如何在C

static boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list) 

,我想與其他自主創建的類(DocScore)代替t的函數。我試圖用Object替換T.但是當我嘗試實例化列表實例時,如

ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>(); 
for (int i = 0; i < index.length; i++) 
DocScoreList.add(root.children.get(i).docList); 

The type of root.children.get(i).docList is ArrayList<DocScore> 

我無法將元素添加到DocScoreList中。有誰知道我該如何執行此操作?

+1

什麼是錯誤信息?另外,什麼類型是'root.children.get(i).docList',是一個'ArrayList '? – 2013-02-15 19:39:21

+3

'static boolean check ...' – 2013-02-15 19:39:45

+0

@JanDvorak它可能是'public class SomeClass '...... – 2013-02-15 19:40:29

回答

0
static <T> boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list) 

例子:

boolean b = checkAnyOutOfBoundary(new int[]{0,1}, new ArrayList<ArrayList<String>>()); 
+0

如何用特定的T調用此函數?順便說一句,日食顯示上面不是正確的方式來編寫一個功能... – shirley 2013-02-15 19:53:10

+0

作出了更正 - 現在應該工作 – 2013-02-15 19:58:57

0

因爲即使在BarFoo的子類的情況下,ArryList也不是ArrayList的超類。

變化

ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>(); 

調用它的

ArrayList<ArrayList<? extends Object>> DocScoreList = new ArrayList<ArrayList<? extends Object>>(); 
+0

您的意思是我應該直接在DocScoreList聲明中寫入ArrayList >,或者在DocScore類定義中擴展Object類? – shirley 2013-02-15 19:54:48

1

所以要添加ArrayList<DocScore>ArrayList<ArrayList<Object>>但是add方法EXPE cts一個ArrayList<Object>

你能提供一個ArrayList<DocStore>哪裏需要ArrayList<Object>?不,因爲A bag of banana is not a bag of fruit

所以DocScoreList必須是ArrayList的東西,可以添加ArrayList<DocStore>。一些實例是:

  • ArrayList<DocStore>實際類型
  • List<DocStore>因爲ArrayList<T>List<T>
  • ArrayList<? extends Object>一些未知類型其(直接或間接)延伸Object列表。由於DocStore符合條件? extends Object這將工作。
  • List<? extends Object>
  • 等你明白了。