现在,我有一个泛型类USetSet<T>
,它扩展了我想要调用的AbstractSet<T>
。值得注意的是,USetSet<T>
的构造函数接受了USet<T>
接口。课程USetSet<T>
如下:
package bag_assignment1;
import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class USetSet<T> extends AbstractSet<T> {
USet<T> s;
public USetSet(USet<T> s) {
this.s = s;
}
@SuppressWarnings("unchecked")
public boolean contains(Object x) {
return s.find((T)x) != null;
}
public boolean add(T x) {
return s.add(x);
}
@SuppressWarnings("unchecked")
public boolean remove(Object x) {
return s.remove((T)x) != null;
}
public Iterator<T> iterator() {
return s.iterator();
}
public int size() {
return s.size();
}
public void clear() {
s.clear();
}
}
供参考,USet<T>
界面为:
package bag_assignment1;
public interface USet<T> extends Iterable<T> {
public int size();
public boolean add(T x);
public T remove(T x);
public T find(T x);
public void clear();
}
现在,在另一堂课中,我正试图创造一个USetSet<T>
的灵感。通常,这种语法适用于我的项目中使用整数传递的泛型。
USetSet<Integer> coolBag=new USetSet<Integer>(Integer.class);
但是,我不知道在这种情况下我是否需要将USet<T>
传入USetSet<T>
才能使其正常运行。有没有办法可以创建USetSet<T>
的实例?
答案 0 :(得分:0)
平凡的是,您可以使用new USetSet<>(null)
创建它。当然,无论何时调用其中一个实例方法,它都会失败...
相反,只需创建一个实现USet
接口的类,并将其传递给,例如。
new USetSet<>(new USet<Integer>() {
// Implement methods.
})
或者:
class USetImpl implements USet<Integer> {
// Implement methods.
}
new USetSet<>(new USetImpl())