Java

Reflection 을 이용해 Interface 정보 얻기

정개발 2021. 5. 3. 09:04

Dog 클래스는 Bark 와 Run 인터페이스를 구현한다고 가정한다.

public class Dog implements Bark, Run{

	@Override
	public void bark() {
    	// do-something
	}

	@Override
	public void run() {
    	// do-something
	}
}

 

이때, Reflection 을 이용해 Dog 가 구현하는 Bark와 Run interface 정보를 얻을 수 있다.

public class ClassNameTest {
	
	@Test
	void getInterfaces () {
		Dog dog = new Dog();
		
		Class<?>[] interfaces = dog.getClass().getInterfaces();
		
		for(int i=0; i<interfaces.length; ++i) {
			System.out.println("interface[" + i + "] : " + interfaces[i]);
		}
	}

}

 

 

실행 결과

interface[0] : interface io.autosar.designer.Bark
interface[1] : interface io.autosar.designer.Run

 

class interface를 추가한 순서대로 출력된다. Bark 와 Run의 순서를 바꾸면, interface[0] 에 Run 의 정보가 담겨있고, interface[1] 에 Bark 의 정보가 담겨있다.

 

public class Dog implements Run, Bark{

	@Override
	public void bark() {
		//do something
	}

	@Override
	public void run() {
		//do something
	}
}

 

실행결과

interface[0] : interface io.autosar.designer.Run
interface[1] : interface io.autosar.designer.Bark