我是Java泛型的新手,但如果我能够设法访问泛型类的成员,我可以通过几种方法解决一堆任务。起点是我有几种类型的数据都需要类似的处理。
是否有办法访问泛型类型的成员,如下面的玩具示例所示?
public void <O> someMethod(AbstractData d, Set<String> filter) {
List<O> list = d.getKeys();
for (O o : list) {
if(filter.contains(o.id)) { // < cannot access member of generic type O
doSomeWork(o);
}
}
}
除了访问o.id之外的所有内容似乎都有用。
答案 0 :(得分:1)
理想的方法是让您的泛型类扩展接口。如果您已经知道泛型类的每个对象都有一个id,请声明<O extends Identifiable
,其中Identifiable
就是这样的:
public interface Identifiable {
int getId();
}
如果您不能使用扩展接口的泛型类,请尝试使用反射。