obtendo apenas o nome da classe Class.getName ()

87

Como posso saber o nome da classe

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


Estou interessado apenas em obter a última parte, ou seja, apenas String.
Qualquer Api pode fazer isso?

akshay
fonte
4
Java tem uma ótima documentação online. A página que andyb vincula abaixo é um exemplo. Sempre que você tiver uma dúvida sobre a funcionalidade exata disponível em uma classe ou pacote, os javadocs são tão fáceis de encontrar quanto pesquisar no Google "java 6 <pacote ou classe em questão>".
jpm

Respostas:

182

Class.getSimpleName()

andyb
fonte
9
String.class.getSimpleName () -> String, onde como String.class.getName () -> java.lang.String
Peter Dietz
Obrigado, @andyb getSimpleName()é mais fácil de acessar o nome da classe sem o nome do pacote. Sintaxe: object.getClass().getSimpleName() Amostra de código
Abhijeet
Como atribuí-lo para variável de string estática. mostrando um erro no Android Studio.
MohanRaj S de
Não funciona para classes internas: isso removerá o nome da classe envolvente, não apenas o pacote.
toolforger
9

As duas formas abaixo funcionam bem.

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

Saída conforme abaixo:

O nome da classe é: package.Student

O nome da classe simples é: Aluno

Venkatesh K
fonte
7

ou programaticamente

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);
Mauricio quintana
fonte
1
Isso me ajudou, pois não consigo usar getSimpleName () no meu framework ... Tq
Imposter
1
Além disso, a abordagem programática produz resultados lógicos para classes anônimas.
Hollis Waite
@Imposter você está usando algo anterior ao Java 1.5?
Stealth Rabino
Você precisa lidar com o caso em que nenhum .é encontrado.
eckes
@verifica se o ponto não foi encontrado, o resultado será -1, adicionando 1 fornecerá uma substring começando no índice 0 - exatamente o que você precisa neste caso. (Acabei de testar isso com int[], o resultado é "[I".)
toolforger
4

Você pode usar a seguinte técnica simples para imprimir o log com o nome da classe.

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

Suponha que temos que verificar o valor da variável vinda no método, então podemos usar o log como abaixo:

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

A importância desta linha é que podemos verificar o nome do método junto com o nome da classe. Para escrever este tipo de log.

escreva: - loge e Enter.

irá imprimir no console

E/MainActivity: printVariable:
Kailas Bhakade
fonte
2

Social.class.getSimpleName ()

getSimpleName (): Retorna o nome simples da classe subjacente conforme fornecido no código-fonte. Retorna uma string vazia se a classe subjacente for anônima. O nome simples de uma matriz é o nome simples do tipo de componente com "[]" anexado. Em particular, o nome simples de uma matriz cujo tipo de componente é anônimo é "[]".

LSD25
fonte
1

Esta é a maneira Groovy de acessar propriedades de objeto:

this.class.simpleName    # returns the simple name of the current class
eaglet3d
fonte
-2

Obtenha um nome simples em vez de caminho.

String onlyClassName =  this.getLocalClassName(); 

chamar o método acima em onCreate

AndroidGeek
fonte
Solução incompleta.
PLG
Se você não fornecer a fonte do método, o OP não poderá usá-lo.
eckes