假设我有以下通用类:
public class Foo<T extends Bar> {
// stuff
}
是否可以指定一个默认类型(例如Baz
),如果没有传递T
,则该类型将充当T
?
不可以。请参阅Java语言规范中的"类型变量"。
话虽如此,您可以提供实现类来达到类似的目的:
public class Foo<T extends Bar> { ... }
public class FooDefault extends Foo< Baz > { ... }
使用工厂方法,例如:
public <T extends Bar> static Foo<T> getInstance(Class<T> clz) {
if (clz == null)
return new Foo<Bar>;
else
return clz.newInstance();
}