1

这是我想要得到的最终结果:

ItemStack block = new ItemStack(Block.dirt, 1);

这就是我所拥有的

    String s = "Block.dirt";    
    ItemStack block = new ItemStack(    , 1);

看起来有点不可能,但是有没有办法将字符串“Block.dirt”变成 Block.dirt?

我尝试了很多东西,有些人建议我使用 GroovyShell 和 Binding,但我做不到。

有没有办法从字符串中命名一个对象?

非常感谢任何帮助。谢谢你。

我可以举个例子吗?

4

3 回答 3

1

为什么你不能这样做?还是使用 MVEL 等评估引擎?

在任何情况下,您都可以拆分字符串,根据类名进行实例化,并使用反射调用方法。或者,在这种情况下,根据您提供的代码段调用静态方法。

在不知道您实际尝试过的方法无效的情况下,不知道还有什么方法可以提供帮助。

于 2012-07-23T23:06:57.897 回答
1

当然——人们总是这样做。例如,当他们打开一个 JDBC 连接对象时。

你想要“class.forName()”:

http://www.theserverside.com/news/1365412/Understanding-ClassforName-Java

在 Java 中,动态加载通常是通过调用 java.lang.Class 类的 forName 方法来实现的

这是一篇关于“反思”的文章:

http://java.sun.com/developer/technicalArticles/ALT/Reflection/

于 2012-07-23T23:07:22.530 回答
0

是的,您会想要使用反射 API

于 2012-07-23T23:07:30.933 回答