Java泛型类通过扩展抽象类的东西“参数化”

时间:2013-11-05 13:35:19

标签: java generics

我有一个AbstractCacheBlock,我想要定义一个包含许多扩展CacheSet的类的类AbstractCacheBlock。我相信我想要的是像

public class CacheSet<? extend AbstractCacheBlock>

但这似乎没有效果。那我怎么能参考那门课呢?通常它看起来像

public class CacheSet<T> {
    public void something() {
        T t = new T();
    }

我用什么代替T呢?

2 个答案:

答案 0 :(得分:9)

初始化泛型类型实例的唯一方法是传递类的实例,如:

public class CacheSet<T>
{
    private Class<T> clazz;

    public CacheSet(Class<T> clazz)
    {
        this.clazz = clazz;
    }

    public void something()
    {
        T t = clazz.newInstance();
    }
}

答案 1 :(得分:1)

使用T创建对象是不可行的。 您可以向可以创建新T对象的类添加依赖项。