2015-11-18 21 views
6

Czy istnieje statyczna metoda klasy "Class", która może nam powiedzieć, czy użytkownik wprowadzony jako klasa (w postaci ciągu) jest poprawną istniejącą klasą Java, czy też nie?Jak sprawdzić, czy istnieje klasa?

+2

Nie rozumiem, dlaczego rezygnujesz z głosowania, że ​​jest to ważne pytanie według mojej opinii. Witamy w SO! – HRgiger

+1

@HRgiger: Dziękuję, doceń. :) –

+0

Potrafię zrozumieć upadek. a) Pytanie jest źle sformułowane. b) Nie jest dobrze zbadane. c) patrz poniżej: –

Odpowiedz

5

Można sprawdzić istnienie klasy, stosując Class.forName takiego:

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

} 
+2

Pamiętaj jednak, że to faktycznie ładuje klasę , które mogą powodować działania niepożądane. Ponadto może się nie powieść, jeśli sama klasa istnieje, ale nie może się załadować z powodu brakujących klas, na których się opiera. –

9

Można użyć Class.forName z kilku dodatkowych parametrów, aby obejść ograniczenia w odpowiedzi Rahul jest.

Class.forName(String) rzeczywiście załaduje i zainicjalizuje klasę, ale Class.forName(String, boolean, ClassLoader) nie zainicjuje jej, jeśli ten drugi parametr jest fałszywy.

Jeśli masz klasę tak:

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

i masz

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

wyjście w konsoli będzie foo loaded and initialized.

Jeśli używasz

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

widać statyczne inicjator nie jest tzw.

+3

Dodałeś kilka dobrych punktów do tego! +1 –

Powiązane problemy