λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/Java

23 Annotation

by Dowon Kang 2024. 1. 21.

 

μžλ°”μ˜ μ–΄λ…Έν…Œμ΄μ…˜(Annotation)은 μ†ŒμŠ€ μ½”λ“œμ— 메타데이터λ₯Ό μΆ”κ°€ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. μ–΄λ…Έν…Œμ΄μ…˜μ€ μ£Όλ‘œ μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ •λ³΄λ₯Ό μ „λ‹¬ν•˜κ±°λ‚˜ λŸ°νƒ€μž„ μ‹œμ— ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘을 μˆ˜μ •ν•˜λŠ” λ° μ‚¬μš©λ©λ‹ˆλ‹€. μ–΄λ…Έν…Œμ΄μ…˜μ€ @ κΈ°ν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ ν‘œν˜„λ˜λ©°, μ—¬λŸ¬ μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

메타데이터?

μžλ°”μ˜ μ–΄λ…Έν…Œμ΄μ…˜(Annotation)μ—μ„œμ˜ λ©”νƒ€λ°μ΄ν„°λŠ” μ†ŒμŠ€ μ½”λ“œμ— 뢀가적인 정보λ₯Ό μ²¨λΆ€ν•˜μ—¬ 컴파일러, ν”„λ ˆμž„μ›Œν¬, λŸ°νƒ€μž„ ν™˜κ²½ 등이 ν•΄λ‹Ή 정보λ₯Ό μ΄ν•΄ν•˜κ³  ν™œμš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. μ–΄λ…Έν…Œμ΄μ…˜μ€ 주둜 클래슀, λ©”μ„œλ“œ, ν•„λ“œ λ“±μ˜ μš”μ†Œμ— λΆ€κ°€ 정보λ₯Ό λΆ€μ—¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

 

 

1) @Override μ–΄λ…Έν…Œμ΄μ…˜: μ»΄νŒŒμΌλŸ¬μ—κ²Œ ν•΄λ‹Ή λ©”μ„œλ“œκ°€ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œν•œλ‹€λŠ” 정보λ₯Ό 제곡

 

 

2) @Deprecated: ν•΄λ‹Ή μš”μ†Œ(클래슀, λ©”μ„œλ“œ, ν•„λ“œ λ“±)κ°€ 더 이상 ꢌμž₯λ˜μ§€ μ•Šκ±°λ‚˜ μ‚¬μš©λ˜μ§€ μ•ŠμŒμ„ ν‘œμ‹œ

 

 

3) @SuppressWarnings: νŠΉμ • κ²½κ³ λ₯Ό λ¬΄μ‹œν•˜λ„λ‘ μ§€μ‹œν•˜λŠ”λ° μ‚¬μš©

 

 

4) @FunctionalInterface: ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λŠ” ν•˜λ‚˜μ˜ μΆ”상 λ©”μ„œλ“œλ§Œμ„ κ°€μ§€κ³  μžˆλŠ” μΈν„°νŽ˜μ΄μŠ€

 

 

5) @CustomAnnotation: μ‚¬μš©μžκ°€ μ§μ ‘ μ •μ˜ν•œ μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜

μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ •μ˜ν•  λ•Œμ—λŠ” @Retentionκ³Ό @Target을 μ‚¬μš©ν•˜μ—¬ μ–΄λ…Έν…Œμ΄μ…˜μ˜ μœ μ§€ μ •μ±…κ³Ό 적용 λŒ€μƒμ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

이외에도 μ—¬λŸ¬ κ°€μ§€ μ–΄λ…Έν…Œμ΄μ…˜μ΄ μžˆμœΌλ©°, ν”„λ ˆμž„μ›Œν¬λ‚˜ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œλ„ λ‹€μ–‘ν•œ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ–΄λ…Έν…Œμ΄μ…˜μ€ λ¦¬ν”Œλ ‰μ…˜(reflection)을 ν†΅ν•΄ λŸ°νƒ€μž„ μ‹œμ— ν•΄λ‹Ή μ •λ³΄λ₯Ό μ½μ–΄μ˜¬ μˆ˜ μžˆμ–΄μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€.

 

 

 

 


Annotations in Java provide additional information to the compiler and JVM. An annotation is a tag representing metadata about classes, interfaces, variables, methods, or fields.

 

Metadata refers to data that provides information about other data that enhances the understanding, management, and utilization of the underlying data.

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

25 Generics  (1) 2024.01.21
24 Enum  (0) 2024.01.21
22 throw & throws  (0) 2024.01.21
21 Exception handling  (0) 2024.01.21
20 Exceptions  (0) 2024.01.21

λŒ“κΈ€