Читаю Брюса Эккеля "Философия Java", раздел про аннотации, где говорится, что аннотации сами по себе и мы ими или отмечаем что либо в коде или храним в них дополнительную информацию которая на код никак не влияет. И тут внезапно на странице 857 говорится
Свойства firstName и lastName снабжаются аннотациями
@ SQLString и получают значения 30 и 50 соответственно.
Полный пример кода:
//:annotations/database/SQLString.java
package annotations.database;
import java.lang.annotation.*;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SQLString{
intvalue() default 0;
Stringname() default "";
Constraints constraints() default @Constraints;
}///
//:annotations/database/Member.java
package annotations.database;
@DBTable(name="MEMBER")
public class Member{
@SQLString(30) String firstName;
@SQLString(50) String lastName;
@SQLInteger Integer age;
@SQLString(value=30,
constraints = @Constraints(primaryKey=true))
String handle;
static int memberCount;
public String getHandle(){return handle;}
public String getFirstName(){return firstName;}
public String getLastName(){return lastName;}
public String toString(){return handle;}
public Integer getAge(){return age;}
}///:~
откуда они их получают? Из аннотаций? Это аннотации устанавливают значения? В общем очень тяжело эта глава написана у Эккеля, обратился к Герберту Шилдту "Java. Полное руководство", прочёл аналогичную главу про аннотации, обратил внимание на вот это выражение
В языке Java имеется языковое средство, позволяющее встраивать справочную информацию в исходные файлы. Эта информация называется аннотацией и не меняет порядок выполнения программы. Это означает, что аннотация сохраняет
неизменной семантику программы.
Но у Эккеля аннотации меняют значения в коде программы, а это может влиять на порядок выполнения программы, я что-то совсем запутался, поясните пожалуйста.