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?


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

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


7

ou programaticamente

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

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:

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 é "[]".


1

Esta é a maneira Groovy de acessar propriedades de objeto:

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

-2

Obtenha um nome simples em vez de caminho.

String onlyClassName =  this.getLocalClassName(); 

chamar o método acima em onCreate


Solução incompleta.
PLG

Se você não fornecer a fonte do método, o OP não poderá usá-lo.
eckes
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.