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 |