Notice
Recent Posts
Link
Today
Total
10-06 00:17
관리 메뉴

dingdong coding

[ JAVA ] Reflection λ³Έλ¬Έ

🐰JAVA/Basic

[ JAVA ] Reflection

🐢 개발개발 🐾 2022. 7. 24. 16:33

Reflection의 κ°œλ…μ„ μ΄ν•΄ν•˜λŠ” λͺ©μ μœΌλ‘œ ν¬μŠ€νŒ…μ„ μž‘μ„±ν•˜κ²Œ λ˜μ—ˆλ‹€.

Reflection 

: ꡬ체적인 클래슀 νƒ€μž…μ„ μ•Œμ§€ λͺ»ν•΄λ„, κ·Έ 클래슀의 λ©”μ†Œλ“œ, νƒ€μž…, λ³€μˆ˜λ“€μ„ μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” Java API

: 컴파일 μ‹œκ°„μ΄ μ•„λ‹Œ μ‹€ν–‰ μ‹œκ°„μ— λ™μ μœΌλ‘œ νŠΉμ • 클래슀 정보λ₯Ό μΆ”μΆœν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž˜λ° 기법 

 

Framework, IDEμ—μ„œ 동적바인딩 κΈ°λŠ₯ 제곡(ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 λ™μ μœΌλ‘œ 클래슀 정보 κ°€μ Έμ™€μ„œ μ‚¬μš©) 

ex)  IntelliJ μžλ™μ™„μ„±, Spring Framework Annotation λ“± 

 

μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ μ–΄λ–€ νƒ€μž…μ˜ 클래슀λ₯Ό μ‚¬μš©ν• μ§€ λͺ¨λ₯΄λŠ” κ²½μš°κ°€ μžˆλ‹€. 이럴 λ•Œ  λ¦¬ν”Œλ ‰μ…˜μ„ μ‚¬μš©ν•˜κ³  μ½”λ“œλ₯Ό μž‘μ„±ν•΄  λŸ°νƒ€μž„μ— ν˜„μž¬ μ‹€ν–‰λ˜κ³  μžˆλŠ” 클래슀λ₯Ό κ°€μ Έμ™€μ„œ μ‹€ν–‰ν•΄μ•Ό λ˜λŠ” 것이닀.

 

즉, λ¦¬ν”Œλ ‰μ…˜μ€ 객체λ₯Ό 톡해 클래슀의 정보λ₯Ό λΆ„μ„ν•΄λ‚΄λŠ” ν”„λ‘œκ·Έλž¨ 기법이닀. 

 

* Reflection으둜 κ°€μ Έμ˜¬ 수 μžˆλŠ” 정보 

 

  • Class
  • Constructor
  • Method
  • Field

μœ„μ™€ 같은 정보λ₯Ό κ°€μ Έμ˜¬ 수 있으며 ν•΄λ‹Ή 정보λ₯Ό 가져와 객체λ₯Ό 생성, λ©”μ„œλ“œ 호좜, λ³€μˆ˜ κ°’ 변경을 ν•  수 μžˆλ‹€.

 

Reflection 예제 κ΄€λ ¨ λ ˆνΌλŸ°μŠ€κ°€ 잘 μ •λ¦¬λ˜μ–΄ μžˆμ–΄ μ°Έμ‘°ν–ˆμŠ΅λ‹ˆλ‹€.

 

JAVA - λ¦¬ν”Œλ ‰μ…˜ (Reflection)μ΄λž€?

λ¦¬ν”Œλ ‰μ…˜(Reflection)μ΄λž€? λ¦¬ν”Œλ ‰μ…˜μ€ ꡬ체적인 클래슀 νƒ€μž…μ„ μ•Œμ§€ λͺ»ν•˜λ”라도 κ·Έ 클래슀의 λ©”μ„œλ“œ, νƒ€μž…, λ³€μˆ˜λ“€μ— μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μžλ°” APIμž…λ‹ˆλ‹€. πŸ’‘ 컴파일 μ‹œκ°„μ΄ μ•„λ‹Œ μ‹€ν–‰ μ‹œκ°„μ—

kdg-is.tistory.com

 

 

 

정리 

Java λ¦¬ν”Œλ ‰μ…˜μ€ 이름 λ³„λ‘œ 클래슀 및 데이터 ꡬ쑰에 λŒ€ν•œ μ •λ³΄μ˜ 동적 검색을 μ§€μ›ν•˜κ³  μ‹€ν–‰ 쀑인 Java ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ μ‘°μž‘μ„ ν—ˆμš©ν•˜κΈ° λ•Œλ¬Έμ— μœ μš©ν•˜λ‹€. 

 

 

 

 

 

 

 

 

 

'🐰JAVA > Basic' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ JAVA ] Garbage Collection  (0) 2022.07.01
[JAVA ] Set Interface  (0) 2022.06.28
[JAVA ] List Interface  (0) 2022.06.20
[JAVA ] Collection  (0) 2022.06.20
[ JAVA ] Optional  (0) 2022.06.15
Comments