Programing

클래스가 Java에서 인터페이스를 구현하는지 확인

lottogame 2020. 10. 18. 08:22
반응형

클래스가 Java에서 인터페이스를 구현하는지 확인


나는 Class물건이 있습니다. Class객체가 나타내는 유형이 특정 인터페이스를 구현 하는지 확인하고 싶습니다 . 이것이 어떻게 성취 될 수 있을지 궁금합니다.

다음 코드가 있습니다. 기본적으로 지정된 패키지의 모든 클래스 배열을 가져옵니다. 그런 다음 배열을 살펴보고 인터페이스를 구현하는 Class 객체를지도에 추가하고 싶습니다. 문제는 isInstance()객체를 매개 변수로 취하는 것입니다. 인터페이스를 인스턴스화 할 수 없습니다. 그래서 나는 이것에 약간의 손실이 있습니다. 어떤 아이디어?

Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
    if(clazz.isInstance(/*Some object*/)) //Need something in this if statement
    {
        retVal.put(clazz.getSimpleName(), clazz);
    }
}

다음을 사용해야합니다 isAssignableFrom.

if (YourInterface.class.isAssignableFrom(clazz)) {
    ...
}

아래 함수를 사용하여 구현 된 모든 인터페이스를 얻을 수 있습니다.

Class[] intfs = clazz.getInterfaces();

사용 class.getInterfaces()하고 인터페이스 클래스가 있는지 확인할 수 있습니다 .

Class someInterface; // the interface you want to check for 
Class x; // 
Class[] interfaces = x.getInterfaces();

for (Class i : interfaces) {
    if (i.toString().equals(someInterface.toString()) {
        // if this is true, the class implements the interface you're looking for
    }
}

".class"를 추가하여 인스턴스를 설정할 수도 있습니다.

Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
    if(Interface.class.isAssignableFrom(clazz))
    {
        retVal.put(clazz.getSimpleName(), clazz);
    }
}

참고 URL : https://stackoverflow.com/questions/12145185/determine-if-a-class-implements-a-interface-in-java

반응형