2014-01-18 129 views
0

我不知道如何在標題說明這一點,我是一個Java初學者,這裏是一個小示例代碼:從接口定義的類獲取對象的Java

我的目標是類似這樣的問題:Union of two object bags in Java,所不同的是在參數,在這一問題提供的解決方案有一個T[] item,於我而言,這是BagInterface<T> anotherBag

接口:http://people.cs.pitt.edu/~ramirez/cs445/handouts/BagInterface.java

ArrayBag.java:工會(),我想補充的所有項目在2袋(數據組)中增加到1.

public class ArrayBag<T> implements BagInterface<T> 
{ 
    private int length; 
    ... 
    /* union of 2 bags */ 
    public BagInterface<T> union(BagInterface<T> anotherBag) // This has to be stay like that. 
    { 
     int total = length + anotherBag.getSize(); 
     BagInterface<T> items = (T[]) new Object[total]; // this may be faulty 

     for (int i = 0; i < length; i++) 
      items.add(bag[i]);       // bag is current bag 

     for (int i = 0; i < anotherBag.getSize(); i++) // this is definitely wrong 
      items.add(anotherBag[i]); 

     return items; 
    } 
} 

我該怎麼做才能解決這個問題?

+0

你能用接口的內容替換'...'嗎?我同意「可能是錯誤的」一行可能是錯誤的,但如果沒有剩下的接口規範就不可能提出更正。 – jedwards

+0

@jedwards這是我家庭作業解決方案的一部分,所以我不能在這裏展示我所有的作品。我已經更新了一些關於這方面的信息,請看看它。 – hlx98007

+0

你想添加沒有重複,或者乾脆添加所有不管? – Bohemian

回答

0

您尚未提供完整的界面,但您需要使用BagInterface的實現來返回BagInterface。更換

BagInterface<T> items = (T[]) new Object[total]; 

隨着

BagInterface<T> items = new ArrayBag(); 

或者您的ArrayBag類適當的構造函數是(再次,你有沒有提供了足夠的代碼,我就知道了)。提供BagInterface有一個add(T)方法,它可以工作,但是你也需要調整你如何訪問anotherBag。

items.add(anotherBag[i]); 

items.add(anotherBag.bag[i]); 

如果這樣的:我會假設你有一個實例變量叫做袋是T.數組在這種情況下,在第二循環中,從將附加沒有幫助,請提供更多信息和背景。

相關問題