通常当你实现一个通用的,你有一些你想要推广的类型T
。我想写一个概括HashSet<T>
的类。java泛型 - 如何实现一个需要HashSet的类<T>?
我想这写下面的方式,但它不是正确的语法或也许它不支持:
public class PermutationHelper<T> implements Iterable<T> {
private HashSet<T> m_set;
private long numberOfPermutations;
private boolean includeEmptyPermutationAsOutput = false;
public PermutationHelper(HashSet<T> set) {
m_set = set;
numberOfPermutations = 2^set.size();
}
public void setIncludeEmptyPermutationAsOutput(boolean value) {
includeEmptyPermutationAsOutput = value;
}
@Override
public Iterator<T> iterator() {
Iterator<T> it = new Iterator<T>() {
long currentIndex = (includeEmptyPermutationAsOutput ? 0 : 1);
@Override
public boolean hasNext() {
return currentIndex < numberOfPermutations;
}
@Override
public T next() {
HashSet<T> result = new HashSet<T>();
return result; // expects T, but is a HashSet<T>..
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
return it;
}
}
我想迭代器给我传入的HashSet<T>
的所有子集。
只要使用'T'作为参数并在适当时参考'HashSet'?即是否有某种理由'助手'不适合你? –
Ryan
另外我希望你不打算命名你的班'助手'。 –
这是可能的,但取决于你想要实现的,还有其他选项 – emotionlessbananas