默认通用类型

时间:2011-12-29 21:09:55

标签: java generics

说我有以下通用类:

public class Foo<T extends Bar> {
   // stuff
}

是否可以指定默认类型(例如Baz),如果没有传递T,它将作为T

2 个答案:

答案 0 :(得分:3)

没有。请参阅Java语言规范中的"Type Variables"

也就是说,您可以提供实现类似目的的子类:

public class Foo<T extends Bar> { ... }

public class FooDefault extends Foo< Baz > { ... }

答案 1 :(得分:2)

使用像

这样的工厂方法
public <T extends Bar> static Foo<T> getInstance(Class<T> clz) { 
    if (clz == null) 
        return new Foo<Bar>; 
    else 
        return clz.newInstance();
}