1

有没有办法在不进行注释的情况下向编译器添加处理器?

基本上,如果用户没有正确实现接口(即未满足后置条件),我希望构建失败。在编译时,我想检查一个类是否实现了一个接口,如果是,运行一些代码来检查实现是否正确。

例如,我想确保实现 getErrorMoniker() 的类在 camelCase 中返回一个字符串。

public interface MyError {
  public String getErrorMoniker();
}

public class MyErrorImplemented1 {
  @Override
  public String getErrorMoniker() { return "goodErrorMoniker"; }
}

public class MyErrorImplemented2 {
  @Override
  public String getErrorMoniker() {
    return "BADERRORMONIKER"; // I would like a compile error here
  }
}

任何建议,将不胜感激。

4

1 回答 1

1

理论上,带有注释的处理器@SupportedAnnotationTypes("*")应该能够处理所有源文件,因为它也适用于空的注释集。从文档中:

如果不存在注释类型,注释处理仍会发生,但只有支持处理“*”的通用处理器才能声明(空)注释类型集。

尽管您的目标是检查返回值可能不起作用,因为这发生在编译时,而不是运行时。

于 2013-04-04T19:31:03.313 回答