[java] 리플렉션을 통해 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;
}


답변