无法使用多个绑定的泛型类参数创建注释

时间:2014-07-11 04:09:46

标签: java generics annotations bounded-wildcard

我正在尝试创建一个可以接受多个类作为输入的注释。典型用法是

@Prerequisites{FirstPrerequisite.class, SecondPrerequisite.class}

为此,我可以创建一个注释,如下所示

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface Prerequisites {
    public Class<?>[] value();
}

我想限制先决条件注释中允许的类型。如果我给出像public Class<? extends Dependency>[] value();这样的东西,那么问题是我的FirstPrerequisite和SecondsPrerequisite可以从同一类型扩展。我尝试了以下但似乎没有工作,他们正在给出编译错误。

public Class<? extends Dependency & TestCaseStep>[] value();
public Class<? extends Dependency , TestCaseStep>[] value();
public Class<T extends Dependency & TestCaseStep>[] value();

如何绑定泛型以获取两种不同类型的输入?

1 个答案:

答案 0 :(得分:0)

一个选项是创建标记接口并让您的类实现接口。然后,您可以提供该接口类型的绑定。

另一种方法是简单地在运行时而不是在编译时移动约束检查。让注释处理器验证提供的Class参数。