【发布时间】:2016-04-14 18:55:57
【问题描述】:
我正在尝试强制转换一个我动态获取的已实现接口的类。我已经尝试了以下方法,但它似乎不起作用。我是如何做到这一点的。
public InterfaceX test(){
InterfaceX x = null;
Class<?> classX = Class.forName("com.TestClassX");
x = (InterfaceX) classX;
return x;
}
编辑: 我不想创建实例,因为我只是想简单地调用接口定义的静态方法。
【问题讨论】:
-
你为什么要这样做?你只会回来
null。 -
您是否尝试创建和转换该类的对象?就其本身而言,类不是类以外的任何事物的实例。
-
您将
Class类型的值转换为InterfaceX。这永远不会奏效。Class是final并且没有实现InterfaceX。 -
如果静态方法是在已知接口中定义的,直接调用即可。没有理由去做你正在尝试的事情。
-
x是一个InterfaceX。InterfaceX是否定义someStaticMethod()?然后就做InterfaceX.someStaticMethod()。多态性不适用于static方法。
标签: java generics casting classloader