Константная корректность в Java с использованием аннотаций?

Есть ли существующая библиотека, которая позволяет мне аннотировать метод Java как @Const, чтобы компилятор (с использованием apt, как я полагаю) отмечал ошибку, если он обновляет поле, или вызывает для поля метод, отличный от @ Const ; и аннотируйте параметр как @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. Но вызов p.setName () изнутри processPerson будет отмечен как ошибка. .) или даже более прямо с p.name = ... .

12
задан M. Elkstein 6 February 2011 в 11:10
поделиться