web-dev-qa-db-ja.com

Javaクラスがリフレクションによって抽象的であるかどうかを判断するにはどうすればよいですか

私はJarファイルのクラスを介して相互作用しており、抽象的でないクラスを見つけたいと思っています。これを解決するには、クラスをインスタンス化し、InstantiationExceptionをトラップしますが、一部のクラスの起動が重いため、パフォーマンスが低下します。 Class.Java docsにはisAbstract()のようなものは明らかに見つかりません。

170

クラスオブジェクトでgetModifiers()を呼び出すと、修飾子の1つとしてabstractが含まれます。

これは link に役立つはずです。

 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()

299
seth
Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());
30
Stobor
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;
}
0