μ΄λ
Έν
μ΄μ
μ΄λ μ¬μ μ μΌλ‘λ μ£Όμμ΄λΌλ μλ―Έλ‘, μ£Όμμ²λΌ μ½λμ λͺ
μνμ¬ ν΄λμ€μ νΉλ³ν μλ―Έλ₯Ό λΆμ¬νκ±°λ κΈ°λ₯μ μ£Όμ
ν μ μλ κΈ°λ₯μ
λλ€.
μΈν°νμ΄μ€λ₯Ό κΈ°λ°μΌλ‘ ν λ¬Έλ²μ΄λ©°, Built-In Annotation
, Meta Annotation
, Custom Annotation
μΈ μ’
λ₯λ‘ κ΅¬λΆν μ μμ΅λλ€.
Javaμ λ΄μ₯λμ΄ μλ μ΄λ
Έν
μ΄μ
μΌλ‘ μ£Όλ‘ μ»΄νμΌλ¬μκ² μ μ©ν μ 보λ₯Ό μ 곡νλ μν μ ν©λλ€.
@Override // λ©μλ μμλ§ λΆμΌ μ μμΌλ©° νμ¬ λ©μλκ° Super ν΄λμ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λν λ©μλμμ μ»΄νμΌλ¬μκ² λͺ
μν©λλ€. μ€ν λ°μ κ°λ₯μ±μ μ‘μμ€ μ μμ΅λλ€.
@Deprecated // λ μ΄μ μ¬μ©νμ§ μλ λ©μλλ₯Ό λνλ
λλ€.
@SupressWarning // νλ‘κ·Έλλ¨Έμ μλλ₯Ό μ»΄νμΌλ¬μκ² μ λ¬νμ¬ κ²½κ³ λ₯Ό μ κ±°ν©λλ€.
@FunctionalInterface // ν¨μν μΈν°νμ΄μ€λΌλ κ²μ μλ¦¬κ³ κ²μ¬νλ κΈ°λ₯μ μ 곡ν©λλ€. κ°λ°μμ μ€μλ₯Ό λ°©μ§ν μ μμ΅λλ€.
μ΄λ
Έν
μ΄μ
μ μ¬μ©λλ μ΄λ
Έν
μ΄μ
μΌλ‘ ν΄λΉ μ΄λ
Έν
μ΄μ
μ λμ λμμ κ²°μ ν©λλ€.
μ£Όλ‘ μλ‘μ΄ μ΄λ
Έν
μ΄μ
μ μ μν λ μ¬μ©ν©λλ€.
@Target // μ΄λ
Έν
μ΄μ
μ΄ μ μ©κ°λ₯ν λμμ μ§μ νλλ° μ¬μ©ν©λλ€. μ¬λ¬ κ° κ°μ μ§μ ν λλ {}λ₯Ό μ¬μ©ν©λλ€.
@Retention // μ΄λ
Έν
μ΄μ
μ΄ μ μ§λλ κΈ°κ°μ μ§μ ν μ μμ΅λλ€. SOURCE / CLASS / RUNTIME
@Documented // μ΄λ
Έν
μ΄μ
μ λν μ λ³΄κ° JavaDocμΌλ‘ μμ±ν λ¬Έμμ ν¬ν¨λλλ‘ ν λ μ¬μ©νλ μ΄λ
Έν
μ΄μ
μΌλ‘ λλΆλΆμ Built-In Annotationμ λΆμ΄ μμ΅λλ€. (@Override, @SuppressWarnings μ μΈ)
@Inherited // μ΄λ
Έν
μ΄μ
μ΄ μμ ν΄λμ€μλ μμλλλ‘ νλ μ΄λ
Έν
μ΄μ
μΌλ‘, μ‘°μ ν΄λμ€μ λΆμ΄λ©΄ μμ ν΄λμ€λ μ΄ μ΄λ
Έν
μ΄μ
μ΄ λΆμ κ²κ³Ό κ°μ΄ μΈμλ©λλ€.
@Native // JVMμ΄ μ€μΉλ OSμ λ€μ΄ν°λΈ λ©μλμ μν΄ μ°Έμ‘°λλ μμ νλμ λΆμ΄λ μ΄λ
Έν
μ΄μ
μ
λλ€. λνμ μΌλ‘ Object ν΄λμ€μ λ©μλλ€μ΄ λ€μ΄ν°λΈ λ©μλμ ν΄λΉλλ©°, λ€μ΄ν°λΈ λ©μλμ μλ°μ μ μλ λ©μλλ₯Ό μ°κ²°νλ κ²μ JNI(Java Native Interface)λΌκ³ ν©λλ€.
μ§μ μ΄λ
Έν
μ΄μ
νμ
μ μ μΈνλ κ²μΌλ‘ νΉλ³ν μ’
λ₯μ μΈν°νμ΄μ€μ
λλ€.
μΌλ°μ μΈ μΈν°νμ΄μ€ μ μΈκ³Ό ꡬλΆνκΈ° μν΄ interface
μμ @
λ₯Ό λΆμ¬ μ¬μ©ν©λλ€.
μ΄λ
Έν
μ΄μ
νμ
μ μ묡μ μΌλ‘ java.lang.annotation.Annotation
μ νμ₯νκΈ° λλ¬Έμ extends
μ μ κ°μ§ μ μμ΅λλ€.
π‘ Marker Annotation
μμκ° ν κ°λ μμΌλ©° λ¨μν νμμΌλ‘μ μ¬μ©λλ μ΄λ
Έν
μ΄μ
μΌλ‘, μ»΄νμΌλ¬μκ² μλ―Έλ₯Ό μ λ¬νλ λ° μ¬μ©ν©λλ€.
π‘ Single-value Annotation
μμλ‘ λ¨μΌ λ³μλ§μ κ°λ μ΄λ
Έν
μ΄μ
μΌλ‘, λ¨μΌ λ³μλ°μ μκΈ° λλ¬Έμ κ°λ§μ λͺ
μνμ¬ λ°μ΄ν°λ₯Ό μ λ¬ν μ μμ΅λλ€.
@interface MyAnnotation {
String value();
}
@MyAnnotation("passed") // @MyAnnotation(value="passed")μ λμΌ
class Newclass { ... }
π‘ Full Annotation
μμλ‘ λ μ΄μμ λ³μλ₯Ό κ°λ μ΄λ
Έν
μ΄μ
μΌλ‘, λ°μ΄ν°λ₯Ό λ°°μ΄ μμ key-valueμ ννλ‘ μ λ¬ν©λλ€.
- μμ νμ
μ Primitive Type, String, Enum, Annotation, Classλ§ νμ©λ©λλ€. κ° μμλ κΈ°λ³Έκ°μ κ°μ§ μ μμ΅λλ€.
- μμμ () μμ 맀κ°λ³μλ₯Ό μ μΈν μ μμ΅λλ€.
- μμΈλ₯Ό μ μΈν μ μμ΅λλ€.
- μμλ₯Ό νμ
맀κ°λ³μλ‘ μ μν μ μμ΅λλ€.
int count() default 1;