我不确定如何在标题中描述这个,我是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;
}
}
我该怎么做才能解决这个问题?
答案 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]);
如果这没用,请提供更多信息和背景信息。