如何将空注释应用于API中公开的Java方法?

如何将空注释应用于API中公开的Java方法?,java,jsr305,Java,Jsr305,假设我有一个具有不变量的类,某个实例变量永远不会为null。我还希望正确使用jsr305空注释。该类作为API公开,因此我不能依靠注释来防止空值;我还需要在运行时检查null public final class NonNullString { private final String string; public NonNullString(String string) { if (string == null) throw new NullPointerException(

假设我有一个具有不变量的类,某个实例变量永远不会为null。我还希望正确使用jsr305空注释。该类作为API公开,因此我不能依靠注释来防止空值;我还需要在运行时检查null

public final class NonNullString {
  private final String string;

  public NonNullString(String string) {
    if (string == null) throw new NullPointerException();
    this.string = string;
  }

  public String getString() {
    return string;
  }
}
将空注释应用于此类的最佳方法是什么
@javax.annotation.Nonnull
应用于构造函数的参数描述了我的意图,但是Eclipse的null分析警告null检查是死代码。如果必要的话,我可以抑制Eclipse的警告,但是这个警告让我怀疑是否有更好的方法来使用注释


编辑:我在问如何处理不使用空注释的客户端代码和使用空注释的代码之间的接口。

Lombok可能就是您要找的。谢谢。我看到Lombok可以从任何名为NonNull或NotNull的注释生成null检查,这在这里是可行的。不过,我一直在寻找一个更轻量级的解决方案。我不确定在编译时插入基本的断言语句能让您获得多大的轻量级。