2010-04-22 21 views
146

W języku C# mamy Type.FullName i Type.Name do uzyskania nazwy typu (w tym przypadku klasy) z lub bez przestrzeni nazw (pakiet w świecie java).Jak uzyskać nazwę klasy bez paczki?

Co to jest odpowiednik java odpowiadający Type.Name?

Oczywiście musi istnieć lepszy sposób niż użycie Class.getName() i ręcznie usunąć nazwę pakietu.

+1

Zrobiłem szybkie wyszukiwanie na ten temat i nie było pod wrażeniem pierwszych wyników, które znalazłem na Google więc rozważyć to jako freebie. –

+5

Zapomnij o Google! ** pierwsze miejsce ** na odpowiedzi na temat biblioteki klas standardowych Java to dokumenty Java API (aka javadocs): http://java.sun.com/javase/reference/api.jsp –

Odpowiedz

267

Class.getSimpleName()

Zwraca prostą nazwę klasy bazowej, jak podano w kodzie źródłowym. Zwraca pusty łańcuch, jeśli podstawowa klasa jest anonimowa.

Prosta nazwa tablicy jest prostą nazwą typu komponentu z dołączonym "[]". W szczególności prosta nazwa tablicy, której typem komponentu jest anonimowy, to "[]".

To faktycznie usuwa informacje o paczce z nazwy, ale to jest ukryte przed tobą.

+0

To również mapuje wewnętrzny nazwa klasy anonimowej do pustego Stringa i robi rzeczy z nazwami klas tablicy. –

+1

Nie wiedziałem, że może zwrócić pusty ciąg, a IMHO to wada projektu. Jeśli nie ma prostej nazwy, powinien wyrzucić wyjątek. – finnw

15

Następująca funkcja będzie działać w JDK w wersji 1.5 i nowszych.

public String getSimpleName() 
10

przypadku korzystania z StackTraceElement, przeznaczenie:

String fullClassName = stackTraceElement.getClassName(); 
String simpleClassName = fullClassName.substring(fullClassName.lastIndexOf('.') + 1); 

System.out.println(simpleClassName); 
Powiązane problemy