我对Q类的idTag方法有疑问。我不确定应该使用哪种类型而不是XXXX。
我尝试了
它说:
类型Q中的方法idTag(List)不适用于 参数(ArrayList
)
interface Taggable<T> {
void tag(T t);
T getTag();
}
class Elem implements Taggable<Elem> {}
class Obj implements Taggable<Obj> {}
class RedElem extends Elem {}
class Q {
static <XXXX> void idTag(List<T> l) {
for (T e : l) e.tag(e);
}
public static void main(String args[]) {
ArrayList<Elem> a = new ArrayList<Elem>();
ArrayList<RedElem> b = new ArrayList<RedElem>();
ArrayList<Obj> c = new ArrayList<Obj>();
idTag(a);
idTag(b);
idTag(c);
}
}
答案 0 :(得分:0)
您要在静态方法中说的是,列表应包含Taggable
个项目,而不是您要声明的内容。您需要
static <T, E extends Taggable<T>> void idTag(List<E> tList, T tagWith) {
tList.forEach(e.tag(tagWith));
}
或者如果您真的想用自身标记每个项目(没有什么意义):
static <E extends Taggable<E>> void idTag(List<E> tList) {
tList.forEach(e-> e.tag(e));
}