Я использую groovy и люблю @Immutable annotation. Проблема заключается в том, что эта аннотация не только создает конструкторы с указанными полями классов, но также создает пустой конструктор и позволяет полям оставаться в нуле (или принимать значение по умолчанию). Я хочу предотвратить это.предотвратить пустые конструкторы от @Immutable аннотации
Пример:
@Immutable class User { int age}
можно назвать как
User jasmin = new User(30)
println "I am ${jasmin.age} years old" // I am 30 years old
, но и как
User james = new User() //Uhoh, I have no age
println "I am ${james.age} years old" // I am 0 years old - maybe not expected
Мой вопрос для них: есть ли аннотации или другие способы, которые препятствуют называя пустой конструктор? Возможно, выбрасывание исключения, когда age
передано (или пустым для него) во время выполнения. Бонусные точки, если я получаю поддержку IDE eclipse, чтобы пустой вызов конструктора был жалуен eclipse во время компиляции.
Я не нашел что-то вроде @NotNull для groovy, но для java я нашел разные аннотации как the ones in this question. Использовал бы одну из них хорошую идею? Как решить? Или лучше написать мою собственную аннотацию - и могу ли я получить помощь IDE, выполнив это?
Это также не помогает мне с аргументами с нулевым значением. Я хочу добиться, чтобы ни один аргумент не был «null». Тем не менее он помогает вызывать пустой конструктор, но также получает помощь от аннотации, имеющей конструктор-карту. Я думаю, мне нужно больше копать в аннотации и преобразование АСТ и создавать свою собственную NotNull Annotation в groovy ... – valenterry