Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,如何将字符串转换为类并调用其静态方法?_Java - Fatal编程技术网

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