Programming

리플렉션을 통해 Java 클래스가 추상적인지 여부를 어떻게 확인할 수 있습니까?

procodes 2020. 5. 24. 20:37
반응형

리플렉션을 통해 Java 클래스가 추상적인지 여부를 어떻게 확인할 수 있습니까?


Jar 파일에서 클래스를 통해 간섭하고 추상적이지 않은 클래스를 찾고 싶습니다. 클래스를 인스턴스화하고 InstantiationException을 트래핑하여이 문제를 해결할 수 있지만 일부 클래스가 시작되면 성능이 저하됩니다. Class.java 문서에서 isAbstract ()와 같은 것을 찾을 수 없습니다.


클래스 객체에서 getModifiers ()를 호출하면 수정 자 중 하나로 추상이 표시됩니다.

링크 가 도움이 될 것입니다.

 Modifier.isAbstract( someClass.getModifiers() );

또한:

http://java.sun.com/javase/6/docs/api/java/lang/reflect/Modifier.html

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getModifiers ()


Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());

public static boolean isInstantiable(Class<?> clz) {
    if(clz.isPrimitive() || Modifier.isAbstract( clz.getModifiers()) ||clz.isInterface()  || clz.isArray() || String.class.getName().equals(clz.getName()) || Integer.class.getName().equals(clz.getName())){
        return false;
    }
    return true;
}

참고 : https://stackoverflow.com/questions/1072890/how-can-i-determine-whether-a-java-class-is-abstract-by-reflection

반응형