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