2015-11-18 28 views
6

Gibt es eine statische Methode der Klasse 'Class', die uns sagen kann, ob ein Benutzer eine Klasse (in Form eines Strings) eingegeben hat oder nicht?Wie überprüft man, ob eine Klasse existiert

+2

Ich verstehe nicht, warum Sie nach meiner Meinung eine gültige Frage nach meiner Meinung gewählt haben. Willkommen bei SO! – HRgiger

+1

@ HRgiger: Danke, danke. :) –

+0

Ich kann den Downvote verstehen. a) Die Frage ist schlecht formuliert. b) Es ist nicht gut erforscht. c) siehe unten –

Antwort

5

können Sie überprüfen die Existenz einer Klasse Class.forName wie folgt aus:

try 
{ 
    Class.forName("myClassName"); 
} 
catch(ClassNotFoundException e) 
{ 

} 
+2

Beachten Sie jedoch, dass dies tatsächlich die Klasse lädt , die Nebenwirkungen haben können. Es kann auch fehlschlagen, wenn die Klasse selbst existiert, aber aufgrund fehlender Klassen nicht geladen werden kann. –

9

Sie Class.forName mit ein paar zusätzliche Parameter verwenden können, um die Einschränkungen in Rahul Antwort zu bekommen.

Class.forName(String) lädt und initialisiert zwar die Klasse, aber Class.forName(String, boolean, ClassLoader) initialisiert es nicht, wenn dieser zweite Parameter falsch ist.

Wenn Sie eine Klasse wie dieses:

public class Foo { 
    static { 
     System.out.println("foo loaded and initialized"); 
    } 
} 

und Sie haben

Class.forName("com.example.Foo") 

die Ausgabe in der Konsole foo loaded and initialized sein.

Wenn Sie

Class.forName("com.example.Foo", 
       false, 
       ClassLoader.getSystemClassLoader()); 

verwenden Sie die statischen Initialisierer sehen, ist nicht genannt.

+3

Sie haben einige gute Punkte hinzugefügt! +1 –

Verwandte Themen