2012-09-05 19 views
7

Ich möchte alle Klassennamen in einem Paket und auch die entsprechenden Attribute und ihre Datentypen in jedem Paket drucken.Wie konvertiert man String-Typ zu Class-Typ in Java

In einem Code, ich bin in der Lage, die Klassennamen in Form von String zu erhalten. In einem anderen Code, den ich bin in der Lage, die Attribute und ihre Datentypen erhalten Classname.class.getAttribute();

mit Jedoch habe ich die beiden Codes zusammenführen möchten. Da in dem ersten Code, den ich die Klassennamen in Form von String bekam, kann ich nicht Classname.class.getAttribute() da hier verwende ClassnameString vom Typ sein.

Also ich möchte eine Methode, die den "Classname" von String Typ zu Class Typ konvertieren.

Ich versuchte Class.forName() aber es hat nicht funktioniert.

+6

Bitte geben Sie an, wie Class.forName() "nicht funktioniert." – skiphoppy

+3

Wenn Class.forName() nicht funktionierte, ist es sehr wahrscheinlich, dass a) der Klassenname nicht richtig ist b) Sie haben eine Fehlermeldung erhalten, wussten aber nicht, was das bedeutet, also haben Sie sie ignoriert. ;) –

+1

Sende deine Fehlermeldung! und posten Sie den Code, in dem Sie versucht haben, 'Class.forName()' –

Antwort

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

Stellen Sie sicher, className wie com.package.class auch vollständig qualifizierten Klassennamen ist, teilen Sie bitte Ihre Fehlermeldung, die Sie sehen.

+0

zu verwenden Ja, der Klassenname wurde nicht vollständig qualifiziert. Nach Angabe des voll qualifizierten Namens funktionierte es :) Danke :) –

1

Wenn der vollständig qualifizierte Name einer Klasse zur Verfügung steht, ist es möglich, die entsprechende Klasse mit der statischen Methode Class.forName() zu erhalten.

ZB:

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

Hinweis: Sicherstellen, dass die Parameter, die Sie für die Funktion zur Verfügung stellen ist vollständig qualifizierten Klassennamen wie com.package.class

Check here für jeden Hinweis.

EDIT:

könnten Sie auch loadClass() Methode versuchen Sie es mit.

ZB:

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

Es wird von der Java Virtual Machine aufgerufen Klasse Verweise aufzulösen.

Syntax:

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

For details on ClassLoader check here

Here ist eine Implementierung von Classloader.

0

Bitte versuchen Sie, wie folgend.

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