получение только имени класса Class.getName ()

87

Как я могу узнать название класса

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


Меня интересует только последняя часть, т.е. только String
Any Api может это сделать?

Акшай
источник
4
У Java есть отличная онлайн-документация. Страница, на которую ссылается Andyb ниже, является примером. Каждый раз, когда у вас возникает вопрос относительно точной функциональности, доступной в классе или пакете, javadocs так же легко найти, как поиск в Google «java 6 <рассматриваемый пакет или класс>».
jpm

Ответы:

182

Class.getSimpleName()

Эндиб
источник
9
String.class.getSimpleName () -> String, где String.class.getName () -> java.lang.String
Питер Дитц
Спасибо, @andyb getSimpleName()проще получить доступ к имени класса без имени пакета. Синтаксис: object.getClass().getSimpleName() Пример кода
Абхиджит
Как присвоить его статической строковой переменной. он показывает ошибку в студии Android.
MohanRaj S
Не работает для внутренних классов: это приведет к удалению имени включающего класса, а не только пакета.
Toolforger
9

Оба способа ниже работают нормально.

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

Вывод, как показано ниже:

Имя класса: package.Student.

Простое имя класса: Студент

Венкатеш К
источник
7

или программно

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);
Маурисио Кинтана
источник
1
Это помогло мне, поскольку я не могу использовать getSimpleName () из моего фреймворка ... Tq
Imposter
1
Кроме того, программный подход дает нормальные результаты для анонимных классов.
Холлис Уэйт
@Imposter, вы используете что-то более раннее, чем Java 1.5?
Stealth Rabbi
Вам нужно обработать случай, когда не .найдено.
eckes
@eckes, если точка не найдена, результатом будет -1, добавление 1 даст вам подстроку, начинающуюся с индекса 0 - именно то, что вам нужно в этом случае. (Я только что проверил это int[], результат такой "[I".)
toolforger
4

Вы можете использовать следующую простую технику для печати журнала с именем класса.

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

Предположим, нам нужно проверить приходящее значение переменной в методе, тогда мы можем использовать журнал, как показано ниже:

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

Важность этой строки в том, что мы можем проверить имя метода вместе с именем класса. Чтобы вести журнал такого типа.

напишите: - логе и Enter.

напечатает на консоли

E/MainActivity: printVariable:
Кайлас Бхакаде
источник
2

Social.class.getSimpleName ()

getSimpleName (): возвращает простое имя базового класса, как указано в исходном коде. Возвращает пустую строку, если базовый класс анонимен. Простое имя массива - это простое имя типа компонента с добавленным «[]». В частности, простое имя массива, тип компонента которого является анонимным, - «[]».

LSD25
источник
1

Вот Groovy-способ доступа к свойствам объекта:

this.class.simpleName    # returns the simple name of the current class
eaglet3d
источник
-2

Получите простое имя вместо пути.

String onlyClassName =  this.getLocalClassName(); 

вызов метода выше в onCreate

AndroidGeek
источник
Неполное решение.
PLG
Если вы не предоставите источник для метода, OP не сможет его использовать.
eckes