如何访问泛型类的类成员?

时间:2017-05-10 14:10:08

标签: java generics

我是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之外的所有内容似乎都有用。

1 个答案:

答案 0 :(得分:1)

理想的方法是让您的泛型类扩展接口。如果您已经知道泛型类的每个对象都有一个id,请声明<O extends Identifiable,其中Identifiable就是这样的:

public interface Identifiable {
    int getId();
}

如果您不能使用扩展接口的泛型类,请尝试使用反射。