0
我有一个注释,我试图去定义一个Class参数。我想确保提供的类扩展了特定的接口。所以,我想出了...如何确保类注解参数在编译时扩展接口?
public @interface Tag {
Class<? extends ITagStyle> style() default NoStyle.class
}
public class NoStyle implements ITagStyle {
...
}
但是我得到“不兼容类型”的编译错误。
我假设这是因为NoStyle.class
正在返回Class
而不是Class<NoStyle>
。在JLS for Java SE 5 & 7(找不到6,我正在使用6)它特别说“void.class”会返回“Class”。 SEE JLS类文字:http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.8.2
有没有办法在编译时执行此操作?如果不是我猜workround在运行时检查的风格值,以确保它延伸ITagStyle:'(
解决方案: JDeveloper已经在他们的‘过程’的编译器错误检查“出来的过程。 “或者使用JDK7u3纠正编译错误
适合我。什么是完整的错误信息? – 2012-03-30 09:50:24
适用于我:) – adarshr 2012-03-30 09:55:57
错误:不兼容的类型。也更具体一点,我使用jdk1.6.0_26 ...也许是一个错误? – xer21 2012-03-30 09:58:00