投一个动态获取的class

Cast a class that is dynamically obtained

我正在尝试转换我动态获取的已实现接口的 class。我在下面尝试了以下但它似乎不起作用。我是如何实现的。

public InterfaceX test(){

 InterfaceX x = null;
 Class<?> classX = Class.forName("com.TestClassX");
 x = (InterfaceX) classX;
 return  x;

}

编辑: 我不想创建一个实例,因为我只是想简单地调用接口定义的静态方法。

如果 x 是一个 Class 对象,则不能执行 x.staticMethod()。但是,这可以使用反射。

public interface Interface {
    static void method() {
        System.out.println("Hello, World!");
    }
}

然后,主要class你可以这样做。

import java.lang.reflect.*;

public class Main  {

    public static void invokeMethod(String className)  {
        try {
            Class<?> clazz = Class.forName(className);
            Method method = clazz.getDeclaredMethod("method");
            method.invoke(null);   // null is used for static methods. For instance methods, pass the instance.
        } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        invokeMethod("Interface");
    }
}

这可行,但您通常应尽量避免使用反射(java.lang.reflect 中的任何内容)。大多数情况下,您要解决的问题都有更好的解决方案。