java - 使用注释的 Java 中的 Const 正确性?

标签 java annotations constants

是否存在允许我将 Java 方法注释为 @Const 的现有库,以便编译器(我假设使用 apt)在更新字段或调用非 @Const 方法时标记错误 field ;并将参数注释为@Const,以便接受方法无法调用其任何非@Const 方法,或更新其任何字段?

(基本上,尝试使用注释向 Java 添加常量正确性;上面的问题中没有涵盖一些明显的细节,例如分配给/来自 @Const 类型的参数等)

我找到了这个:http://confluence.atlassian.com/pages/viewpage.action?pageId=182158080但它似乎只能作为 IDEA 的一部分提供。

根据下面的澄清请求,下面是示例代码来说明我的意思:

class Person {
  private String name;
  private String address;

  @Const public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  ... etc. for address
}

现在,如果我定义一个方法,例如:

void processPerson(@Const Person p)

像这样的行:p.getName()processPerson 中是可以的,因为 getName 被标记为 @Const 方法。但是从 processPerson 中调用 p.setName() 会被标记为错误。

请注意,这与 final 有很大不同:如果参数定义为 final Person p,则对 p 的任何赋值都会被非法的,但是修改 p 引用的内容仍然是完全有效的(使用 p.setName(...) 或者更直接地使用 p.name = ...

最佳答案

关于java - 使用注释的 Java 中的 Const 正确性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912532/

相关文章:

java - ReSTLet客户端使用身份验证 key

java - 如何使用 JUnit Test 注释断言我的异常消息?

ios - IBAction 连接到 IF 语句

class - @Test(enabled = false) 是否适用于 TestNG 中的类?

c - 为什么我在 C 中初始化结构时得到 #28 expression must be a constant value?

c++ - 在C++中按引用传递类成员时,const不起作用

java - java 将数组元素按顺序插入数据库

java - SWT FileDialog 在带有 Oracle Java 7 的 Mac OSX 上不能正常工作

c++ - 理解具有冲突要求的 const 正确性

java - 如何在 Java 中确定给定日期前一天的日期?