我可以将具有泛型类型的类用于不同类的集合吗?

Dim*_* K. 2 java generics

我有以下通用类:

public class Foo<T> {
    private String name;
    private T value;
    ... // get/set methods
}
Run Code Online (Sandbox Code Playgroud)

在另一堂课中我想要:

public class Bar {
    private List<Foo> list;

    public <T> Foo<T> getFoo(String name) {
        // find elem which matches the name
        return listElement;
    }
}
Run Code Online (Sandbox Code Playgroud)

T我猜签名中所指的内容没有联系getFoo()。IntelliJ 抱怨未检查的分配。我不能这样做,List<Foo<T>>因为T在课堂上下文中不存在Bar

可以这样做吗,或者在这种情况下我是否滥用了泛型的整个概念?

Joo*_*gen 5

您还需要该课程。因为类型擦除。

public class Bar {
    private List<Foo<?>> list;

    public <T> Foo<T> getFoo(Class<T> type, String name) {
        // find elem which matches the name
        return type.cast(listElement);
    }
}
Run Code Online (Sandbox Code Playgroud)

结论是,这样的属性包装器对于按名称获取的 getter 没有任何意义。按类(例如按接口)获取方法可能更有趣。