这是我想要获得的最终结果:
ItemStack block = new ItemStack(Block.dirt, 1);
这就是我所拥有的
String s = "Block.dirt";
ItemStack block = new ItemStack( , 1);
有点看起来不可能,但有没有办法将字符串“Block.dirt”变成Block.dirt?
我尝试了很多东西,有些人建议我使用GroovyShell和Binding,但我不能这样做。
有没有办法从字符串中命名对象?
非常感谢任何帮助。 谢谢。
我可以举个例子吗?
答案 0 :(得分:1)
为什么你不能这样做?或者使用像MVEL等评估引擎?
在任何情况下,您都可以拆分字符串,根据类名实例化,并使用反射来调用方法。或者,在这种情况下,请根据您提供的代码段调用静态方法。
如果不知道你实际尝试过什么不起作用,不知道还有什么可以提供帮助。
答案 1 :(得分: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/
答案 2 :(得分:0)
是的,您需要使用reflection API。