通常、ジェネリックを実装する場合、一般化したいタイプのT
があります。 HashSet<T>
を一般化したクラスを作成したいと思います。java generics - 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 'を参照してください。つまり、「Helper 」があなたのためにうまくいかない理由がありますか? –
Ryan
また、クラス名を「ヘルパー」にしないことを願っています。 –
これは可能ですが、実装したいものによって異なりますが、他のオプションもあります – emotionlessbananas