본문 바로가기

Java

Reflection 을 이용해 Interface 정보 얻기

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

 

'Java' 카테고리의 다른 글

ClassLoader  (0) 2021.11.30
Class 객체  (0) 2021.11.30
애너테이션 (Annotation)  (0) 2021.11.29
OpenJDK 버전 변경하며 사용하는 방법  (0) 2021.10.20
try-with-resources 를 사용하자  (0) 2021.06.28