是否可以通过Java批注将通用类型作为值接收?
Converter
在上面的注释wine
上查看注释。
答案 0 :(得分:1)
无法执行此操作,但是,您可能会感兴趣的一种解决方法。
如果您不希望使用注释参数,并且无法传递默认值,则可以始终使用数组。
public @interface Converter {
Class<? extends TypeConverter>[] type() default {};
}
//.. and the possible usages
@Converter
@Converter(type = FooConverter.class)
@Converter(type = { FooConverter.class, ThisIsWhatCanHappen.class }) // this is the downside of this approach
// retrieving type from annotation
void foo(Converter converter) {
TypeConverter typeConverter = converter.type().length > 0
? converter.type()[0]
: null; // or some default value
// now that you have your TypeConverter do a backflip or something
}
有两个缺点
type
值的第一个元素。