Me gustaría ampliar la respuesta de Martin allí ...
Su solución es bastante buena, pero se puede ajustar para que cualquier "tipo de variable" se pueda imprimir de esa manera (en realidad es Tipo de valor, más sobre el tema ). Dicho esto, "ajustado" puede ser una palabra fuerte para esto. De todos modos, puede ser útil.
Solución Martins:
a.getClass().getName()
Sin embargo, si desea que funcione con cualquier cosa, puede hacer esto:
((Object) myVar).getClass().getName()
//OR
((Object) myInt).getClass().getSimpleName()
En este caso, la primitiva simplemente se envolverá en una envoltura. Obtendrá el Objeto de la primitiva en ese caso.
Yo mismo lo usé así:
private static String nameOf(Object o) {
return o.getClass().getSimpleName();
}
Usando genéricos:
public static <T> String nameOf(T o) {
return o.getClass().getSimpleName();
}