pobieranie tylko nazwy klasy Class.getName ()


88

Jak mogę uzyskać nazwę klasy

String.class.getName()  returns java.lang.String


Interesuje mnie tylko ostatnia część, tj. Tylko łańcuch
znaków. Każdy interfejs API może to zrobić?


4
Java ma świetną dokumentację online. Przykładem jest strona, do której prowadzi link andyb poniżej. Za każdym razem, gdy masz pytanie dotyczące dokładnej funkcjonalności dostępnej w klasie lub pakiecie, javadoc są tak łatwe do znalezienia, jak wyszukiwanie w Google „java 6 <kwestionowany pakiet lub klasa>”.
jpm,

Odpowiedzi:


185

9
String.class.getSimpleName () -> String, gdzie jako String.class.getName () -> java.lang.String
Peter Dietz

Dziękuję, @andyb getSimpleName()jest łatwiejszy w dostępie do nazwy klasy bez nazwy pakietu. Składnia: object.getClass().getSimpleName() Przykładowy kod
Abhijeet

Jak przypisać go do statycznej zmiennej łańcuchowej. pokazuje błąd w Android Studio.
MohanRaj S

Nie działa dla klas wewnętrznych: spowoduje to usunięcie nazwy klasy otaczającej, a nie tylko pakietu.
toolforger

9

Poniższe oba sposoby działają dobrze.

System.out.println("The Class Name is: " + this.getClass().getName());
System.out.println("The simple Class Name is: " + this.getClass().getSimpleName());

Wyjście jak poniżej:

Nazwa klasy to: package.Student

Prosta nazwa klasy to: Student


7

lub programowo

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);

1
Pomogło mi to, ponieważ nie mogę używać getSimpleName () z mojego frameworka ... Tq
Imposter

1
Ponadto podejście programistyczne daje rozsądne wyniki dla klas anonimowych.
Hollis Waite

@Imposter, używasz czegoś wcześniejszego niż Java 1.5?
Stealth Rabbi

Musisz zająć się przypadkiem, w którym nie .znaleziono.
eckes

@eckes jeśli kropka nie zostanie znaleziona, wynikiem będzie -1, dodanie 1 da ci podciąg zaczynający się od indeksu 0 - dokładnie to, czego potrzebujesz w tym przypadku. (Właśnie to przetestowałem int[], wynik jest "[I".)
toolforger

4

Możesz użyć następującej prostej techniki drukowania dziennika z nazwą klasy.

private String TAG = MainActivity.class.getSimpleName();

Załóżmy, że musimy sprawdzić nadchodzącą wartość zmiennej w metodzie, a następnie możemy użyć loga takiego jak poniżej:

private void printVariable(){
Log.e(TAG, "printVariable: ");
}

Znaczenie tej linii jest takie, że możemy sprawdzić nazwę metody wraz z nazwą klasy. Aby napisać ten typ dziennika.

napisz: - loge i Enter.

wydrukuje na konsoli

E/MainActivity: printVariable:

2

Social.class.getSimpleName ()

getSimpleName (): zwraca prostą nazwę klasy bazowej podaną w kodzie źródłowym. Zwraca pusty ciąg, jeśli klasa bazowa jest anonimowa. Prosta nazwa tablicy to prosta nazwa typu komponentu z dołączonym „[]”. W szczególności prostą nazwą tablicy, której typ komponentu jest anonimowy, jest „[]”.


1

Oto sposób, w jaki Groovy uzyskuje dostęp do właściwości obiektu:

this.class.simpleName    # returns the simple name of the current class

-2

Uzyskaj prostą nazwę zamiast ścieżki.

String onlyClassName =  this.getLocalClassName(); 

wywołaj powyższą metodę w onCreate


Niekompletne rozwiązanie.
PLG

Jeśli nie podasz źródła dla metody OP, nie będziesz mógł jej użyć.
eckes
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.