Como você conhece um tipo variável em java?

Digamos que declaro uma variável:
String a = "test";

e eu quero saber que tipo é, isto é, a saída deve ser java.lang.String Como faço isto?

Author: ojonugwa ochalifu, 2010-04-20

7 answers

a.getClass().getName()
 195
Author: Martin, 2010-04-20 11:18:04

Se queres o nome, usa o método do Martin. Se você quer saber se é uma instância de uma determinada classe:

boolean b = a instanceof String

 26
Author: Martin Konecny, 2012-03-19 18:18:51
Aprendi com o motor de busca(o meu Inglês é muito mau , por isso código...) Como obter o tipo de variável? Up's:
String str = "test";
String type = str.getClass().getName();
value: type = java.lang.String

Este método:

str.getClass().getSimpleName();
value:String

Agora exemplo:

Object o = 1;
o.getClass().getSimpleName();
value:Integer
 24
Author: Copy_Paste, 2017-07-10 18:29:25
Gostaria de aprofundar a resposta do Martin... A solução dele é bastante boa, mas pode ser alterada para que qualquer "tipo variável" possa ser impresso assim.(É realmente Tipo de Valor, mais sobre o tópico ). Não tão alterado como aponta uma possibilidade. A solução dele foi:
a.getClass().getName()

Se queres que funcione com qualquer coisa, podes fazer isto:

((Object) myVar).getClass().getName()
//OR
((Object) myInt).getClass().getSimpleName()
Neste caso, o primitivo será embrulhado num invólucro. Você terá o objeto de o primitivo, nesse caso.

Eu mesmo o usei assim:

private static String nameOf(Object o) {
    return o.getClass().getSimpleName();
}

Usando Genéricos:

public static <T> String nameOf(T o) {
    return o.getClass().getSimpleName();
}
 18
Author: Atspulgs, 2017-08-23 07:33:33

Usar a funcionalidade de sobrecarga do operador em java

class Test {

    void printType(String x) {
        System.out.print("String");
    }

    void printType(int x) {     
        System.out.print("Int");
    }

    // same goes on with boolean,double,float,object ...

}
 3
Author: epicwhat001, 2017-07-10 18:31:17

Eu concordo com o que Joachim Sauer disse, não é possível saber (o tipo variável! não é o tipo de valor!) a menos que sua variável seja um atributo de classe (e você teria que recuperar campos de classe, obter o campo direito pelo nome...)

Na verdade para mim é totalmente impossível que qualquer método {[[0]} lhe dê a resposta certa, já que a resposta seria diferente no mesmo objeto exato, de acordo com o contexto em que você chama este método...

Como teehoo disse, se souberes na compilação lista definida de tipos para testar você pode usar instanceof, mas você também terá subclasses retornando true...

Uma solução possível seria também inspirar-se da implementação de java.lang.reflect.Field e criar a sua própria classe Field, e depois declarar todas as suas variáveis locais como esta implementação custom Field... mas é melhor você encontrar outra solução, eu realmente me pergunto por que você precisa do tipo variável, e não apenas o tipo de valor?

 1
Author: Sebastien Lorber, 2017-07-10 18:30:39
Acho que temos aqui várias soluções.
  • o instace de pode ser uma solução.
Porquê? Em Java todas as classes são herdadas da própria classe objeto. Então, se você tem uma variável e você gostaria de saber o tipo que isso vai funcionar.
  • Sistema.as.println (((objecto)f).getClass().getName ());

Ou

  • inteiro.classe.isInstance (1985); / / gives verdadeiro

Ou

  • [[2]}IsPrimitive ()
    public static void main(String[] args) {
    
     ClassDemo classOne = new ClassDemo();
     Class classOneClass = classOne();
    
     int i = 5;
     Class iClass = int.class;
    
     // checking for primitive type
     boolean retval1 = classOneClass.isPrimitive();
     System.out.println("classOneClass is primitive type? = " + retval1);
    
     // checking for primitive type?
     boolean retval2 = iClass.isPrimitive();
     System.out.println("iClass is primitive type? = " + retval2);
    }
    
Isto vai dar-nos ...
  1. Falso
  2. verdadeiro

Descubra mais aqui: Como determinar o tipo primitivo de uma variável primitiva?

Https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Http://docs.oracle.com/cd/E26806_01/wlp.1034/e14255/com/bea/p13n/expression/operator/Instanceof.html

 1
Author: Karoly, 2017-07-10 18:44:24