Java,如何将字符串转换为类并调用其静态方法?
但标记的行失败了:Java,如何将字符串转换为类并调用其静态方法?,java,Java,但标记的行失败了: java.lang.ClassCastException:无法将java.lang.Class强制转换为items.Item要创建新实例,需要执行以下操作 class Item { public static test() { } } String s = "package.Item"; Item o = (Item)Class.forName(s).cast(Item.class); // * o.test(); 若要调用静态方法,只需在类而不是
java.lang.ClassCastException:无法将java.lang.Class强制转换为items.Item要创建新实例,需要执行以下操作
class Item
{
public static test()
{
}
}
String s = "package.Item";
Item o = (Item)Class.forName(s).cast(Item.class); // *
o.test();
若要调用静态方法,只需在类而不是实例上调用它
Class c = Class.forName("Item");
Item i = (Item)c.newInstance();
或者您可以使用反射而不直接引用类
Item.test();
Class.forName()
返回一个Class
对象,而不是该类的实例。甚至不编译..然后你想要一个类
而不是项
,你将无法像那样调用测试
方法,你将不得不使用反射。上帝啊,人们和反对票怎么了。这个问题一点也不坏。事实上,这是一件需要记住和了解的事情,我很想得到正确的答案,这样我下次就可以实现它了!他无法调用Item.test(),因为他将项接收到字符串中。。他需要反思才能从他使用的示例代码中的类中获得方法(测试)。当然,他的代码没有意义,但我用我的代码工作。为了完整性,我添加了反射代码。这是一个重复的问题。。。不需要回答;)这是一个措词不当的问题:)
Class c = Class.forName("Item");
Method method = c.getMethod("test");
method.invoke(null);