Как сказал компилятор, аннотации должны быть постоянными (т. Е. Вы можете определить значение во время компиляции.) Теперь, если я правильно угадываю, похоже, что вы используете эту аннотацию, чтобы обозначить, что значения этих полей должны быть равны пробежать через валидатор поля равенства. Один из подходов, который вы могли бы использовать, - это использовать рефлексию. Вместо того, чтобы пытаться аннотировать значением, аннотируйте имя поля вместо
public class MyBean{
private String field1;
@EqualsField("field1")
private String field2;
}
Затем в вашем валидаторе вы можете прочитать имя поля и использовать отражение для доступа к нему
Object o = object.getClass().getDeclaredField(annotationValue).get(object);
o == object.(field with annotation) OR
o.equals(object.(field with annotation));
В зависимости от того, что вы пытаетесь сделать, вам может потребоваться добавить в логику, основанную на типе поля, но все тот же общий принцип.