Tengo un nombre de clase de bean como "Bean1". En mi método principal, tengo una cadena que contiene el nombre de la variable. String str = "Bean1"; Ahora, ¿cómo puedo usar la variable String para obtener la clase y acceder a las propiedades de Bean? Soy nuevo en Java. por favor ayuda.cadena java a clase
Respuesta
Debe utilizar Java API de reflexión:
Class c = Class.forName("package.name.Bean1");
entonces puede usar c.newInstance() para crear instancias de la clase. Este método usa constructor que no requiere parámetros.
Ver detalles aquí: http://download.oracle.com/javase/tutorial/reflect/
, probablemente también necesite una instancia de Bean1 – cherouvim
La funcionalidad que intento implementar es que "Hay una Inetrface y clases de Bean relacionadas creadas en el tiempo de ejecución de una aplicación. Puedo obtener el camino donde se encuentra la clase y la interfaz de bean. Ahora tengo una clase "SrcInfo" donde la lista de mehtod y los parámetros del Bean se proporcionan como variables de clase. Ahora tengo que crear dinámicamente una clase Java donde necesito crear un método que tome el objeto Bean como un argumento y devuelva un HashMap manipulando los datos contenidos en el objeto Bean. Por lo tanto, tengo el nombre de la clase de frijol como variable String. –
@MANU SINHA: debe incluir esta información en la pregunta (edítela, por favor). Esta es información importante para obtener una respuesta útil –
duplicados de Does Java support variable variables?
Java no soporta obtener dinámicamente una variable basada en una cadena de su nombre (también conocido como variables variables). Es probable que haya una forma diferente de hacer lo que intenta hacer, como usar un objeto Map para asignar nombres a beans. Si edita su pregunta para explicar lo que quiere hacer con un poco más de detalle, es posible que tengamos algunas respuestas más concretas.
(Por otro lado, si la pregunta era acerca de una clase llamada Bean1, luego a la derecha de Kel.)
Paso a paso:
//1. As Kel has told you (+1), you need to use
//Java reflection to get the Class Object.
Class c = Class.forName("package.name.Bean1");
//2. Then, you can create a new instance of the bean.
//Assuming your Bean1 class has an empty public constructor:
Object o = c.newInstance();
//3. To access the object properties, you need to cast your object to a variable
// of the type you need to access
Bean1 b = (Bean1) o;
//4. Access the properties:
b.setValue1("aValue");
Para este último paso, lo que necesita saber la tipo del bean, o un supertipo con las propiedades que necesita acceder. Y supongo que no lo sabes, si toda la información que tienes en la clase es una cadena con su nombre.
Al utilizar la reflexión, puede acceder a los métodos de la clase, pero en este caso, deberá conocer los nombres y los tipos de parámetros de entrada de los métodos que se invocarán. seguir adelante con el ejemplo, cambiar los pasos 3 y 4:
// 3. Get the method "setValue1" to access the property value1,
//which accepts one parameter, of String type:
Method m=c.getMethod("setValue1", String.class);
// 4. Invoke the method on object o, passing the String "newValue" as argument:
m.invoke(o, "newValue");
Tal vez necesita volver a pensar su diseño, si no tiene toda esta información avalaible en tiempo de ejecución.
- 1. Clase JSON a Java
- 2. propiedades Java oponerse a cadena
- 3. ruby convertir nombre de clase en cadena a clase real
- 4. ¿Convertir cadena a objeto de clase Python?
- 5. Java una instancia de clase de la cadena
- 6. Java cómo crear una instancia de una clase de cadena
- 7. android cómo usar recurso de cadena en una clase java
- 8. Java; clase base de conversión a la clase derivada
- 9. genéricos de Java: ¿clase?
- 10. cadena a cadena de matriz de conversión en Java
- 11. Llamar a una clase java desde perl
- 12. Alternativa a la clase observable de Java?
- 13. interfaz Java La conversión a Clase
- 14. Agregando anotaciones programáticas a una clase Java
- 15. Object [] a la Clase [] en Java
- 16. Redirigir stdout a una cadena en Java
- 17. Convertir cadena a Clob en Java
- 18. Java: inetaddress a la conversión de cadena
- 19. Convertir cadena a fecha en java
- 20. Convertir arreglo a cadena en Java/maravilloso
- 21. Conversión de Unicode a cadena en Java
- 22. Java cadena de alinear a la derecha
- 23. java-me: Convierte la cadena a Boolean
- 24. Convierte Mes cadena a entero en Java
- 25. Cómo convertir el tipo de cadena a clase escriba en java
- 26. Java: localización de cadena estática
- 27. ¿Cómo puedo asignar una cadena a una función en Java?
- 28. Conversión de cadena a matriz "Carácter" en Java
- 29. Devolver una clase C++ a Java a través de JNI
- 30. scala - obtener clase de una cadena
La funcionalidad que intento implementar es que "Hay una Inetrface y clases de Bean relacionadas creadas en el tiempo de ejecución de una aplicación. Puedo obtener la ruta donde se encuentra la clase de bean y la interfaz. Ahora tengo obtuve una clase "SrcInfo" donde la lista de parámetros y los parámetros del Bean se proporcionan como variables de clase. Ahora tengo que crear dinámicamente una clase Java donde necesito crear un método que tome el objeto Bean como un argumento y devuelva un HashMap manipulando los datos contenidos en el objeto Bean. Por lo tanto, tengo el nombre de la clase de bean como String variable –