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


87

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

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


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


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

Ответы:


182

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


1

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

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

-2

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

String onlyClassName =  this.getLocalClassName(); 

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


Неполное решение.
PLG

Если вы не предоставите источник для метода, OP не сможет его использовать.
eckes
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.