从Java中的接口定义类获取对象

时间:2014-01-18 21:47:17

标签: java arrays interface

我不确定如何在标题中描述这个,我是Java的初学者,这里有一些示例代码:

我的目标与此问题相似:Union of two object bags in Java,区别在于参数,此问题中提供的解决方案为T[] item,在我的情况下,它是BagInterface<T> anotherBag < / p>

界面:http://people.cs.pitt.edu/~ramirez/cs445/handouts/BagInterface.java

ArrayBag.java:在union()中,我希望将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;
    }
}   

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

您尚未提供完整界面,但是您需要使用BagInterface的实现来返回BagInterface。取代

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

使用

BagInterface<T> items = new ArrayBag();

或者你的ArrayBag类的任何适当的构造函数(再次,你没有提供足够的代码让我知道)。提供BagInterface有一个add(T)方法,这应该可行,但是你还需要调整你访问anotherBag的方式。我将假设您有一个名为bag的实例变量,它是一个T数组。在这种情况下,请更改第二个循环中的add:

items.add(anotherBag[i]);

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

如果这没用,请提供更多信息和背景信息。