1

これは、Imが取得しようとしている最終結果です。

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 に答える