我开始使用Java的泛型,似乎缺少一个关键组件。
首先,我对需要参数的原始类型进行了一些阅读并意识到没有太多事情要做,因为它们是通用的,但我的问题是BagInterface
和LinkedBag
之间的互动:
package Chapter3;
public interface BagInterface<T> {
/** Gets the current number of entries in the bag.
* @return the integer number of entries in the bag. */
public int getCurrentSize();
/** Sees whether this bag is full.
*@return true if the bag is full, or false if not. */
public boolean isFull();
/** Sees whether the bag is empty.
*@return true if bag is empty, or false if not. */
public boolean isEmpty();
/** Adds new entry to this bag.
*@param newEntry the object to be added as a new entry
*@return if the addition was successful, or false if not. */
public boolean add(T newEntry);
/** Removes one unspecified entry from this bag, if possible.
*@return either the removed entry, if the removal was successful, or null. */
public T remove();
/** Removes one occurrence of a given entry from this bag.
*@param anEntry the entry to be removed
*@return true id the removal was successful, or false if not. */
public boolean removal(T anEntry);
/** Removes all entries from this bag. */
public void clear();
/** Counts the number of times a given entry appears in this bag.
*@param anEntry the entry to be counted
*@return the number of times anEntry appears in the bag. */
public int getFrequencyOf(T anEntry);
/** Tests whether this bag contains a given entry.
*@param anEntry the entry to locate
*@return true if this bag contains anEntry, or false if not. */
public boolean contains(T anEntry);
/**Retrieves all entries that are in this bag.
*@return a newly allocated array of all the entries in the bag */
public T[] toArray();
}
这两个错误与T未解决有关
package Chapter3;
public class LinkedBag implements BagInterface {
// reference to first node
private Node firstNode;
private int numberOfEntries;
// default constructor
public LinkedBag() {
firstNode = null;
numberOfEntries = 0;
}
// second constructor
(error occurs here) public LinkedBag(T[] item, int numberOfItems) {
this();
for(int index = 0; index < numberOfItems; index++)
add(item[index]);
}`
另一个是get.data,但我相信这也与T不解决
有关(error occurs here) result[index] = currentNode.getData();
index++;
currentNode = currentNode.getNextNode();
}// end while
return result;
}// end is full
如果需要更多信息,我会将完整的.java文件转录为注意,但我试图让它保持特定和简洁。
答案 0 :(得分:2)
LinkedBag
实现了原始BagInterface
。如果你想引用它的类型规范,你也应该将类型参数添加到LinkedBag
,并让它以某种方式引用BagInterface
类型。 E.g:
public class LinkedBag<T> implements BagInterface<T> {
// Here --------------^---------------------------^