Reflection

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

JVM에 λ‘œλ”©λ˜μ–΄ μžˆλŠ” μžˆλŠ” ν΄λž˜μŠ€μ™€ λ©”μ†Œλ“œ 정보λ₯Ό 읽어 올 수 μžˆλ‹€.

public class Car{
    public void drive{
        // ....
    }
}
public class Main{
    public static void main(String[] args){
        Object car = new Car();
        car.drive(); // 컴파일 μ—λŸ¬
    }
}

Object νƒ€μž…μœΌλ‘œ Car클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 μˆ˜λŠ” μžˆμ§€λ§Œ μ‚¬μš©κ°€λŠ₯ν•œ λ©”μ†Œλ“œλŠ” Object의 λ³€μˆ˜λ“€κ³Ό λ©”μ†Œλ“œλ“€ 뿐이기 λ•Œλ¬Έμ— 컴파일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. μ΄λŸ¬ν•œ κ²½μš°μ— μ‚¬μš©ν•˜λŠ”κ²Œ λ¦¬ν”Œλ ‰μ…˜μ΄λ‹€.

μžλ°” 클래슀 νŒŒμΌμ€ λ°”μ΄νŠΈ μ½”λ“œλ‘œ μ»΄νŒŒμΌλ˜μ–΄μ„œ static μ˜μ—­μ— μœ„μΉ˜ν•˜κ²Œ λœλ‹€. κ·ΈλŸ¬λ―€λ‘œ 클래슀 μ΄λ¦„λ§Œ μ•Œκ³  있으면 μ–Έμ œλ“ μ§€ 이 μ˜μ—­μ„ μ‚΄νŽ΄ 클래슀 정보λ₯Ό μ•Œ 수 μžˆλ‹€.

  • ClassName

  • Class Modifiers(public, private, synchronized)

  • Package Info

  • Superclass

  • Implemented Interfaces

  • Constructors

  • MethodsFields

  • Annotations

λ‹€μŒκ³Ό 같은 정보듀을 μ•Œ 수 μžˆλ‹€.

μ°Έμ‘°νŽ˜μ΄μ§€

Last updated