2012-09-05 5 views
7

Quiero imprimir todos los nombres de clase en un paquete y también imprimir los atributos correspondientes y sus tipos de datos en cada paquete.Cómo convertir el tipo de cadena a clase escriba en java

En un código, puedo obtener los nombres de clase en forma de cadena. En otro código, puedo obtener los atributos y sus tipos de datos usando Classname.class.getAttribute();

Sin embargo, quiero fusionar los dos códigos. Como en el primer código obtuve los nombres de clase en forma de cadena, no puedo usar Classname.class.getAttribute() ya que aquí Classname será del tipo String.

Así que quiero un método que convierta el "Nombre de clase" del tipo String al tipo Class.

Intenté Class.forName() pero no funcionó.

+6

Especifique cómo Class.forName() "no funcionó". – skiphoppy

+3

Si Class.forName() no funcionó, es muy probable que a) el nombre de clase no sea correcto b) recibiste un mensaje de error pero no sabías lo que significaba, así que lo ignoraste. ;) –

+1

¡Publique su mensaje de error! y publique el código donde intentó usar 'Class.forName()' –

Respuesta

16
Class<?> classType = Class.forName(className); 

Asegúrese className es el nombre completo de la clase como com.package.class También, por favor compartir su mensaje de error que se ve.

+0

Sí, el className no estaba completamente calificado. Al dar el nombre completo, funcionó :) Gracias :) –

1

Si el nombre completo de una clase está disponible, es posible obtener la clase correspondiente utilizando el método estático Class.forName().

Ej:

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 

Nota: Asegúrese de que el parámetro que proporciona para la función es el nombre completo de la clase como com.package.class

Check here para cualquier referencia.

EDIT:

También podría tratar de usar loadClass() método.

Ej:

ClassLoader cl; 
Class c = cl.loadClass(name); 

Se invoca por la máquina virtual de Java para resolver referencias de clases.

Sintaxis:

public Class<?> loadClass(String name) 
        throws ClassNotFoundException 

For details on ClassLoader check here

Here es una implementación del cargador de clases.

0

Por favor, intente lo siguiente.

String str = "RequiredClassName";  
Class <?> Cref = Class .forName("PackageNaem."+str); 
Cuestiones relacionadas