HOWTO · Java
Como obter a classe de execução de um objeto em Java
Saiba por que Java não tem o operador typeof e como getClass() retorna a classe de execução de um objeto, inclusive de objetos wrapper.
Nesta página
Java não tem o operador typeof. Para inspecionar a classe de execução de um objeto, chame getClass() em uma referência não nula. Valores primitivos, como int e char, não são objetos e não podem chamar esse método diretamente; primeiro, converta o primitivo em um objeto wrapper para usar essa abordagem. Java também oferece outras maneiras de trabalhar com informações de tipo, então getClass() é útil quando você precisa saber a classe real de um objeto existente.
As perguntas sobre tipos e operadores estão agrupadas no Tutorial de Java, incluindo a forma como Java responde à questão do typeof.
Obter a classe de execução de um objeto em Java
O método getClass() é definido por Object e retorna um objeto Class que descreve a classe de execução do receptor. Por exemplo, uma referência String pode chamar o método diretamente. Ao imprimir esse objeto Class, o nome inclui o pacote, como em class java.lang.String.
Este programa Java completo imprime uma string e a classe do objeto referenciado por ela:
class RuntimeClassExample {
public static void main(String[] args) {
String message = "Hello";
System.out.println(message);
System.out.println("Class: " + message.getClass());
}
}
A saída padrão é:
Hello
Class: class java.lang.String
Se você começar com um primitivo, atribua-o a um objeto wrapper, como Integer ou Character, antes de chamar getClass(). O boxing converte um valor primitivo no objeto wrapper correspondente. No momento da chamada, a referência precisa apontar para um objeto; uma referência null não tem receptor.
Obter a classe de execução de objetos wrapper em Java
As classes wrapper permitem inspecionar objetos que representam valores primitivos. Este exemplo usa Integer e Character. getClass() identifica a classe de execução de cada objeto, enquanto getSimpleName() retorna o nome sem a qualificação do pacote.
class WrapperClassExample {
public static void main(String[] args) {
Integer count = 20;
Character letter = 'G';
System.out.println("Integer class: " + count.getClass());
System.out.println("Character class: " + letter.getClass());
System.out.println("Integer simple name: " + count.getClass().getSimpleName());
System.out.println("Character simple name: " + letter.getClass().getSimpleName());
}
}
Os nomes de classe exibidos por essas chamadas são java.lang.Integer e java.lang.Character; seus nomes simples são Integer e Character.