π€ Annotation : μλν μ΄μ μ΄λ ?
μλ° μ λν μ΄μ (Java Annotation) : μλ° μμ€ μ½λμ μΆκ°νμ¬ μ¬μ©ν μ μλ λ©νλ°μ΄ν°μ μΌμ’
- λ³΄ν΅ @ κΈ°νΈλ₯Ό μμ λΆμ¬μ μ¬μ©
- JDK 1.5 λ²μ μ΄μμμ μ¬μ© κ°λ₯
- ν΄λμ€ νμΌμ μλ² λλλμ΄ μ»΄νμΌλ¬μ μν΄ μμ±λ ν μλ° κ°μλ¨Έμ μ ν¬ν¨λμ΄ μλ
μ΄λ Έν μ΄μ μ @μ΄λ Έν μ΄μ μ΄λ¦(μμ±1=κ°1, μμ±2=κ°2, ...) ννλ‘ μ¬μ©νλ©°, μ£Όλ‘ ν΄λμ€, λ©μλ, λ³μ, λ§€κ°λ³μ λ±μ λΆμ°©νμ¬ μ¬μ©λ©λλ€.
* λ©νλ°μ΄ν° : μ ν리μΌμ΄μ μ΄ μ²λ¦¬ν λ°μ΄ν°κ° μλ, μ»΄νμΌ κ³Όμ κ³Ό μ€ν κ³Όμ μμ μ½λλ₯Ό μ΄λ»κ² μ²λ¦¬ν΄μΌ νλμ§ μλ €μ£Όλ μΆκ° μ 보
π μλν μ΄μ μ νμμ±

κ³Όκ±°μ νμΌ κ΄λ¦¬λ μλ° μ½λμ κ΄λ ¨ μ€μ νμΌμ λ°λ‘ μ μ₯νκ³ , κ·Έ λλ§λ€ versionμ ꡬλΆνμ¬ κ΄λ¦¬νλ€.
μμ κ΄λ¦¬λ°©λ²μ λ€μκ³Ό κ°μ λ¨μ μ΄ μμλ€.
1. μ΄μ©μκ° μ€μ νμΌμ μ λ°μ΄νΈ νμ§ μλ μ΄λ €μ
2. μ€μ κ³Ό μ½λκ° λΆλ¦¬λμ΄μμ΄ κ°λ°μ λν μ΄λ €μ
κ·Έ ν΄κ²°μ± μΌλ‘ λ€μκ³Ό κ°μ λ°©λ²μ΄ μ μλμλ€.

μ΄λ‘ μΈν΄ νλμ νμΌμμ μ½λμ μ€μ μ κ΄λ¦¬ν μ μκ² λμλ€.
π μ΄λ Έν μ΄μ μ μ’ λ₯
- νμ€(λ΄μ₯) μ΄λ Έν μ΄μ : μλ°κ° κΈ°λ³Έμ μΌλ‘ μ 곡ν΄μ£Όλ μ΄λ Έν μ΄μ
- λ©ν μ΄λ Έν μ΄μ : μ΄λ Έν μ΄μ μ μν μ΄λ Έν μ΄μ
- μ¬μ©μμ μ μ΄λ Έν μ΄μ : μ¬μ©μκ° μ§μ μ μνλ μ΄λ Έν μ΄μ
1. λΉνΈμΈ μ΄λ Έν μ΄μ (Built-in Annotation)
@Override
- μμ ν΄λμ€λ μΈν°νμ΄μ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λν¨μ λνλ λλ€.
- μμ ν΄λμ€(λλ μΈν°νμ΄μ€)μμ ν΄λΉ λ©μλλ₯Ό μ°Ύμ μ μλ€λ©΄ μ»΄νμΌ μλ¬λ₯Ό λ°μ μν΅λλ€
public class Parent {
public void mother() {
}
public void father() {
}
}
public class child extends Parent {
@Override
public void mother() { // good override.
System.out.println("Mom");
}
@Override
public void daughter() { // Compile-time error.
}
}
@Deprecated
- ν΄λΉ μμ(ν΄λμ€, λ©μλ, νλ λ±)κ° λ μ΄μ μ¬μ©λμ§ μμμ λνλ λλ€.
- μ¬μ©ν κ²½μ° μ»΄νμΌ κ²½κ³ λ₯Ό λ°μ ν€μλλ€.
@SuppressWarnings
- μ»΄νμΌλ¬μ κ²½κ³ λ₯Ό 무μνλλ‘ μ§μ ν©λλ€.
2. λ©ν μ΄λ Έν μ΄μ (Meta Annotation)
@Retention
- μ΄λ Έν μ΄μ μ μ μ§ μ μ± μ μ§μ ν©λλ€. (μμ€, ν΄λμ€, λ°νμ)
- RetentionPolicy.SOURCE : μ»΄νμΌ μ κΉμ§λ§ μ ν¨. (μ»΄νμΌ μ΄νμλ μ¬λΌμ§)
- RetentionPolicy.CLASS : μ»΄νμΌλ¬κ° ν΄λμ€λ₯Ό μ°Έμ‘°ν λκΉμ§ μ ν¨.
- RetentionPolicy.RUNTIME : μ»΄νμΌ μ΄νμλ JVMμ μν΄ κ³μ μ°Έμ‘°κ° κ°λ₯. (리νλ μ μ¬μ©)
@Target
- μ΄λ Έν μ΄μ μ λΆμ°©ν μ μλ λμ(ν΄λμ€, λ©μλ, νλ λ±)μ μ§μ ν©λλ€.
- ElementType.PACKAGE : ν¨ν€μ§ μ μΈ
- ElementType.TYPE : νμ μ μΈ
- ElementType.ANNOTATION_TYPE : μ΄λ Έν μ΄μ νμ μ μΈ
- ElementType.CONSTRUCTOR : μμ±μ μ μΈ
- ElementType.FIELD : λ©€λ² λ³μ μ μΈ
- ElementType.LOCAL_VARIABLE : μ§μ λ³μ μ μΈ
- ElementType.METHOD : λ©μλ μ μΈ
- ElementType.PARAMETER : μ λ¬μΈμ μ μΈ
- ElementType.TYPE_PARAMETER : μ λ¬μΈμ νμ μ μΈ
- ElementType.TYPE_USE : νμ μ μΈ
@Documented
- ν΄λΉ μ΄λ Έν μ΄μ μ javadocμΌλ‘ λ¬Έμνν κ²μΈμ§λ₯Ό λνλ λλ€.
@Inherited
- ν΄λΉ μ΄λ Έν μ΄μ μ μμ κ°λ₯νλλ‘ μ§μ ν©λλ€.
3. 컀μ€ν μ΄λ Έν μ΄μ (Custom Annotation)
κ°λ°μκ° μ§μ μ μν μ΄λ Έν μ΄μ μΌλ‘, μ ν리μΌμ΄μ μ λ§λ μ¬μ©μ μ μ μ΄λ Έν μ΄μ μ λ§λ€ μ μμ΅λλ€.
@Target(ElemetType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ObjectId { // Annotation μ μ
}
public class SkillSpec { // Annotation μ μ©
//
@ObjectId
private String old;
private String name;
...
}
π μ°Έκ³ μλ£
1. https://velog.io/@jkijki12/annotation
[Java] μ΄λ Έν μ΄μ μ΄ λλ°??
μλ° μ΄λ Έν μ΄μ μ λν΄μ 곡λΆνμ!!
velog.io
2. μλ°μ μ μ- λ¨κΆμ±
3. https://bangu4.tistory.com/199
[Java] Annotation μ΄λ Έν μ΄μ - μ΄μ 리
1. μ΄λ Έν μ΄μ μ΄λ? μλ° μ΄λ Έν μ΄μ (Java Annotation) μλ Έν μ΄μ μ μ£Όμμ΄λΌλ μλ―Έλ₯Ό κ°μ§λ€. μλ° μμ€ μ½λμ μ¬μ΄μ @ κΈ°νΈλ₯Ό μμ λΆμ¬μ μ¬μ©νλλ°, JDK 1.5 λ²μ μ΄μμμ μ¬μ© κ°λ₯νλ€. μ΄
bangu4.tistory.com
4. https://techblog.woowahan.com/2684/
μμμ μ ν 컀μ€ν μ΄λ Έν μ΄μ | μ°μννμ λ€ κΈ°μ λΈλ‘κ·Έ
{{item.name}} layout: post title: "μμμ μ ν 컀μ€ν μ΄λ Έν μ΄μ " description: "custom annotationμΌλ‘ κ°κ²°νκ³ μλκ° λͺ νν μ½λ μμ±νκΈ°" author: allen.song date: 2020-06-26 15:50:00 +0900 categories: experience published: t
techblog.woowahan.com
β 컀μ€ν μ΄λ Έν μ΄μ μ μ΄λ»κ² μ¬μ©ν΄μΌ νλμ§λ₯Ό μμλ₯Ό λ€μ΄ μ€λͺ ν΄μ£Όμλλ°, 컀μ€ν μ΄λ Έν μ΄μ μ μμ£Ό μ¬μ©νλ λΆλ€μ΄λΌλ©΄ νλ²μ―€ μ½μ΄λ³Όλ§ν λ΄μ©μΈ κ² κ°μ μ¬κΈ°μ μ°Έκ³ λ‘ λ£μ΄λλ€.
'π΅ java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA | Database μ κ·ν/λΉμ κ·ν (0) | 2023.06.02 |
---|---|
JAVA | Database (0) | 2023.06.02 |
JAVA | ν΄λμ€μ κ°μ²΄, μΈμ€ν΄μ€λ ? (0) | 2023.03.31 |
JAVA | μ½λλΌλΌ μλ° κ°μ (μνκΈ° λ§λ€κΈ°) (0) | 2023.03.27 |
JAVA | λλμ½λ© μλ° κ°μ (μΆμν΄λμ€, μΈν°νμ΄μ€) _ Quiz#8 (0) | 2023.02.10 |
π€ Annotation : μλν μ΄μ μ΄λ ?
μλ° μ λν μ΄μ (Java Annotation) : μλ° μμ€ μ½λμ μΆκ°νμ¬ μ¬μ©ν μ μλ λ©νλ°μ΄ν°μ μΌμ’
- λ³΄ν΅ @ κΈ°νΈλ₯Ό μμ λΆμ¬μ μ¬μ©
- JDK 1.5 λ²μ μ΄μμμ μ¬μ© κ°λ₯
- ν΄λμ€ νμΌμ μλ² λλλμ΄ μ»΄νμΌλ¬μ μν΄ μμ±λ ν μλ° κ°μλ¨Έμ μ ν¬ν¨λμ΄ μλ
μ΄λ Έν μ΄μ μ @μ΄λ Έν μ΄μ μ΄λ¦(μμ±1=κ°1, μμ±2=κ°2, ...) ννλ‘ μ¬μ©νλ©°, μ£Όλ‘ ν΄λμ€, λ©μλ, λ³μ, λ§€κ°λ³μ λ±μ λΆμ°©νμ¬ μ¬μ©λ©λλ€.
* λ©νλ°μ΄ν° : μ ν리μΌμ΄μ μ΄ μ²λ¦¬ν λ°μ΄ν°κ° μλ, μ»΄νμΌ κ³Όμ κ³Ό μ€ν κ³Όμ μμ μ½λλ₯Ό μ΄λ»κ² μ²λ¦¬ν΄μΌ νλμ§ μλ €μ£Όλ μΆκ° μ 보
π μλν μ΄μ μ νμμ±

κ³Όκ±°μ νμΌ κ΄λ¦¬λ μλ° μ½λμ κ΄λ ¨ μ€μ νμΌμ λ°λ‘ μ μ₯νκ³ , κ·Έ λλ§λ€ versionμ ꡬλΆνμ¬ κ΄λ¦¬νλ€.
μμ κ΄λ¦¬λ°©λ²μ λ€μκ³Ό κ°μ λ¨μ μ΄ μμλ€.
1. μ΄μ©μκ° μ€μ νμΌμ μ λ°μ΄νΈ νμ§ μλ μ΄λ €μ
2. μ€μ κ³Ό μ½λκ° λΆλ¦¬λμ΄μμ΄ κ°λ°μ λν μ΄λ €μ
κ·Έ ν΄κ²°μ± μΌλ‘ λ€μκ³Ό κ°μ λ°©λ²μ΄ μ μλμλ€.

μ΄λ‘ μΈν΄ νλμ νμΌμμ μ½λμ μ€μ μ κ΄λ¦¬ν μ μκ² λμλ€.
π μ΄λ Έν μ΄μ μ μ’ λ₯
- νμ€(λ΄μ₯) μ΄λ Έν μ΄μ : μλ°κ° κΈ°λ³Έμ μΌλ‘ μ 곡ν΄μ£Όλ μ΄λ Έν μ΄μ
- λ©ν μ΄λ Έν μ΄μ : μ΄λ Έν μ΄μ μ μν μ΄λ Έν μ΄μ
- μ¬μ©μμ μ μ΄λ Έν μ΄μ : μ¬μ©μκ° μ§μ μ μνλ μ΄λ Έν μ΄μ
1. λΉνΈμΈ μ΄λ Έν μ΄μ (Built-in Annotation)
@Override
- μμ ν΄λμ€λ μΈν°νμ΄μ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λν¨μ λνλ λλ€.
- μμ ν΄λμ€(λλ μΈν°νμ΄μ€)μμ ν΄λΉ λ©μλλ₯Ό μ°Ύμ μ μλ€λ©΄ μ»΄νμΌ μλ¬λ₯Ό λ°μ μν΅λλ€
public class Parent {
public void mother() {
}
public void father() {
}
}
public class child extends Parent {
@Override
public void mother() { // good override.
System.out.println("Mom");
}
@Override
public void daughter() { // Compile-time error.
}
}
@Deprecated
- ν΄λΉ μμ(ν΄λμ€, λ©μλ, νλ λ±)κ° λ μ΄μ μ¬μ©λμ§ μμμ λνλ λλ€.
- μ¬μ©ν κ²½μ° μ»΄νμΌ κ²½κ³ λ₯Ό λ°μ ν€μλλ€.
@SuppressWarnings
- μ»΄νμΌλ¬μ κ²½κ³ λ₯Ό 무μνλλ‘ μ§μ ν©λλ€.
2. λ©ν μ΄λ Έν μ΄μ (Meta Annotation)
@Retention
- μ΄λ Έν μ΄μ μ μ μ§ μ μ± μ μ§μ ν©λλ€. (μμ€, ν΄λμ€, λ°νμ)
- RetentionPolicy.SOURCE : μ»΄νμΌ μ κΉμ§λ§ μ ν¨. (μ»΄νμΌ μ΄νμλ μ¬λΌμ§)
- RetentionPolicy.CLASS : μ»΄νμΌλ¬κ° ν΄λμ€λ₯Ό μ°Έμ‘°ν λκΉμ§ μ ν¨.
- RetentionPolicy.RUNTIME : μ»΄νμΌ μ΄νμλ JVMμ μν΄ κ³μ μ°Έμ‘°κ° κ°λ₯. (리νλ μ μ¬μ©)
@Target
- μ΄λ Έν μ΄μ μ λΆμ°©ν μ μλ λμ(ν΄λμ€, λ©μλ, νλ λ±)μ μ§μ ν©λλ€.
- ElementType.PACKAGE : ν¨ν€μ§ μ μΈ
- ElementType.TYPE : νμ μ μΈ
- ElementType.ANNOTATION_TYPE : μ΄λ Έν μ΄μ νμ μ μΈ
- ElementType.CONSTRUCTOR : μμ±μ μ μΈ
- ElementType.FIELD : λ©€λ² λ³μ μ μΈ
- ElementType.LOCAL_VARIABLE : μ§μ λ³μ μ μΈ
- ElementType.METHOD : λ©μλ μ μΈ
- ElementType.PARAMETER : μ λ¬μΈμ μ μΈ
- ElementType.TYPE_PARAMETER : μ λ¬μΈμ νμ μ μΈ
- ElementType.TYPE_USE : νμ μ μΈ
@Documented
- ν΄λΉ μ΄λ Έν μ΄μ μ javadocμΌλ‘ λ¬Έμνν κ²μΈμ§λ₯Ό λνλ λλ€.
@Inherited
- ν΄λΉ μ΄λ Έν μ΄μ μ μμ κ°λ₯νλλ‘ μ§μ ν©λλ€.
3. 컀μ€ν μ΄λ Έν μ΄μ (Custom Annotation)
κ°λ°μκ° μ§μ μ μν μ΄λ Έν μ΄μ μΌλ‘, μ ν리μΌμ΄μ μ λ§λ μ¬μ©μ μ μ μ΄λ Έν μ΄μ μ λ§λ€ μ μμ΅λλ€.
@Target(ElemetType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ObjectId { // Annotation μ μ
}
public class SkillSpec { // Annotation μ μ©
//
@ObjectId
private String old;
private String name;
...
}
π μ°Έκ³ μλ£
1. https://velog.io/@jkijki12/annotation
[Java] μ΄λ Έν μ΄μ μ΄ λλ°??
μλ° μ΄λ Έν μ΄μ μ λν΄μ 곡λΆνμ!!
velog.io
2. μλ°μ μ μ- λ¨κΆμ±
3. https://bangu4.tistory.com/199
[Java] Annotation μ΄λ Έν μ΄μ - μ΄μ 리
1. μ΄λ Έν μ΄μ μ΄λ? μλ° μ΄λ Έν μ΄μ (Java Annotation) μλ Έν μ΄μ μ μ£Όμμ΄λΌλ μλ―Έλ₯Ό κ°μ§λ€. μλ° μμ€ μ½λμ μ¬μ΄μ @ κΈ°νΈλ₯Ό μμ λΆμ¬μ μ¬μ©νλλ°, JDK 1.5 λ²μ μ΄μμμ μ¬μ© κ°λ₯νλ€. μ΄
bangu4.tistory.com
4. https://techblog.woowahan.com/2684/
μμμ μ ν 컀μ€ν μ΄λ Έν μ΄μ | μ°μννμ λ€ κΈ°μ λΈλ‘κ·Έ
{{item.name}} layout: post title: "μμμ μ ν 컀μ€ν μ΄λ Έν μ΄μ " description: "custom annotationμΌλ‘ κ°κ²°νκ³ μλκ° λͺ νν μ½λ μμ±νκΈ°" author: allen.song date: 2020-06-26 15:50:00 +0900 categories: experience published: t
techblog.woowahan.com
β 컀μ€ν μ΄λ Έν μ΄μ μ μ΄λ»κ² μ¬μ©ν΄μΌ νλμ§λ₯Ό μμλ₯Ό λ€μ΄ μ€λͺ ν΄μ£Όμλλ°, 컀μ€ν μ΄λ Έν μ΄μ μ μμ£Ό μ¬μ©νλ λΆλ€μ΄λΌλ©΄ νλ²μ―€ μ½μ΄λ³Όλ§ν λ΄μ©μΈ κ² κ°μ μ¬κΈ°μ μ°Έκ³ λ‘ λ£μ΄λλ€.
'π΅ java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA | Database μ κ·ν/λΉμ κ·ν (0) | 2023.06.02 |
---|---|
JAVA | Database (0) | 2023.06.02 |
JAVA | ν΄λμ€μ κ°μ²΄, μΈμ€ν΄μ€λ ? (0) | 2023.03.31 |
JAVA | μ½λλΌλΌ μλ° κ°μ (μνκΈ° λ§λ€κΈ°) (0) | 2023.03.27 |
JAVA | λλμ½λ© μλ° κ°μ (μΆμν΄λμ€, μΈν°νμ΄μ€) _ Quiz#8 (0) | 2023.02.10 |