默认泛型类型

4

假设我有以下通用类:

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

是否可以指定一个默认类型(例如Baz),如果没有传递T,则该类型将充当T


不,但你想要解决什么问题? - M Platvoet
2个回答

3

不可以。请参阅Java语言规范中的"类型变量"

话虽如此,您可以提供实现类来达到类似的目的:

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

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

也许可以使用注解处理器实现吗? - milan
2
不,以前从未使用过它们,只是在想。但它可能最终只是一个复杂版本的工厂方法。 - milan

2

使用工厂方法,例如:

public <T extends Bar> static Foo<T> getInstance(Class<T> clz) { 
    if (clz == null) 
        return new Foo<Bar>; 
    else 
        return clz.newInstance();
}

我认为你的意思是让最后一行创建一个Foo对象。 - Andy Thomas
是的,真的,对此感到抱歉 :) 无论如何,想法应该很清楚。 - jdevelop
1
您可以通过左下角的“编辑”链接修正您的答案。 - Andy Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接