如何通过反射判断一个Java类是否是抽象类

发布于 2024-07-25 19:01:45 字数 148 浏览 6 评论 0原文

我正在通过 Jar 文件中的类进行交互,并希望找到那些不抽象的类。 我可以通过实例化类并捕获 InstantiationException 来解决这个问题,但这会影响性能,因为某些类启动繁重。 我在 Class.java 文档中找不到类似 isAbstract() 的任何内容。

I am interating through classes in a Jar file and wish to find those which are not abstract. I can solve this by instantiating the classes and trapping InstantiationException but that has a performance hit as some classes have heavy startup. I can't find anything obviously like isAbstract() in the Class.java docs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦幻的味道 2024-08-01 19:01:45

当您在类对象上调用 getModifiers() 时,它将使用 Abstract 作为其修饰符之一。

这个链接应该有所帮助。

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

It'll have abstract as one of its modifiers when you call getModifiers() on the class object.

This link should help.

 Modifier.isAbstract( someClass.getModifiers() );

Also:

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

心如荒岛 2024-08-01 19:01:45
Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());
Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());
绮烟 2024-08-01 19:01:45
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;
}
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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文