Есть ли существующая библиотека, которая позволяет мне аннотировать метод 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 = ...
.