Java: ayuda para transformar una cadena en un objeto de clase

Este es el resultado final que estoy tratando de obtener:

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

Y esto es lo que tengo

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

Parece un poco imposible, pero ¿hay alguna manera de convertir la cadena "Block.dirt" en Block.dirt?

Intenté muchas cosas, algunas personas me sugirieron usar GroovyShell y Binding, pero no puedo hacerlo.

¿Hay alguna forma de nombrar un objeto de una cadena?

Cualquier ayuda es muy apreciada. Gracias.

¿Puedo tener un ejemplo?

Respuesta 1

¿Por qué no puedes hacer eso? ¿O utilizar un motor de evaluación como MVEL, etc.?

En cualquier caso, puede dividir la cadena, crear instancias según el nombre de la clase y usar la reflexión para llamar al método. O, en este caso, llame a un método estático, basado en el fragmento que proporcione.

Sin saber lo que realmente ha intentado, eso no funcionó, no estoy seguro de qué otra manera ayudar.

Respuesta: 2

Claro, la gente lo hace todo el tiempo. Por ejemplo, cuando abren un objeto de conexión JDBC.

Desea "class.forName ()":

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

Dentro de Java, la carga dinámica generalmente se logra llamando al método forName en la clase java.lang.Class

Aquí hay un artículo sobre "Reflexión" en general:

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

Respuesta: 3

Estoy teniendo una duda Entiendo que jdk tiene [jre + herramientas de desarrollo (Java, javac, depurador, etc.) + código fuente (src.zip)]. Ahora trabajar en el compilador de Java no tiene nada que ver con ...

Estoy buscando una biblioteca que proporcione acceso de lectura y escritura de tipo seguro para un Mapa <String, String> a través de un bean Java proxy. Por ejemplo: interfaz Person {String getName (); nulo setName (...

¿Hay alguna forma de crear transacciones con Java SE? Por ejemplo, tenemos alguna clase con main y un método de entrada. Lo que hacemos es poner algunos números en la consola, agregarlos a una lista ...

Quiero ejecutar JAX-RS 2.0 / Jersey en Grizzly 2, pero ahora no sé cómo configurarlo. Encontré las siguientes dependencias de Maven: <dependency> <groupId> org.glassfish.grizzly </groupId> ...