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

Java 如何访问泛型类型的类的类成员?,java,generics,Java,Generics,我不熟悉Java泛型,但是如果我能够访问泛型类类型的成员,我就可以用几个方法解决一堆任务。首先,我有几种类型的数据,它们都需要类似的处理 是否有一种方法可以访问泛型类型上的成员,如下面的示例所示 public void <O> someMethod(AbstractData d, Set<String> filter) { List<O> list = d.getKeys(); for (O o : list) { if(fil

我不熟悉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);
        }
    }
 }
publicsvoidsomethod(abstractdatad,Set-filter){
List=d.getKeys();
对于(O O:列表){
if(filter.contains(o.id)){/<无法访问泛型类型o的成员
doSomeWork(o);
}
}
}

除了访问o.id之外的一切似乎都正常工作。

对于泛型类来说,理想的方法是扩展接口。如果您已经知道泛型类的每个对象都有一个id,那么声明
您需要告诉java O将是某种类型,比如so
public void someMethod(…
),当然,为了不处理原始类型或未检查的强制类型转换,您还需要查看AbstractData提供的接口;如
getKeys()
也应返回一个
列表。
public interface Identifiable {
    int getId();
}