java中如何区分接口和类

Gav*_*iel 0 java reflection interface class

我有一些遗留代码,如下所示:

    Set<Class<? extends Foo>> classes = reflections.getSubTypesOf(Foo.class);
    for (Class<? extends Foo> cl : classes) {
        Foo<?, ?> foo = cl.newInstance();
        // use foo
    }
Run Code Online (Sandbox Code Playgroud)

我想添加另一个接口:

interface NewFoo extends Foo {...}
Run Code Online (Sandbox Code Playgroud)

但随后它尝试调用 NewFoo 上的 newInstance。目前我的解决方案是这样的:

        try {
            Foo<?, ?> foo = cl.newInstance();
            // use foo
        } catch (InstantiationException ignore) {
        }
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的方法?当我手里有一个Class对象时,我能区分接口和类吗?

tom*_*ty3 5

可以调用Class中的实例方法

 clazz.isInterface() 
Run Code Online (Sandbox Code Playgroud)