tipos primitivos objeto nombres ejemplos declaracion datos java primitive-types typeof

primitivos - tipos de variables en java netbeans



¿Cómo determinar el tipo primitivo de una variable primitiva? (2)

Hay una manera fácil que no requiere el boxeo implícito, por lo que no te confundirás entre los primitivos y sus envoltorios. No se puede usar isInstance para tipos primitivos; por ejemplo, llamar a Integer.TYPE.isInstance(5) ( Integer.TYPE es equivalente a int.class ) devolverá false ya que 5 se autoboxa en un Integer antemano.

La forma más fácil de obtener lo que desea (tenga en cuenta que técnicamente se realiza en tiempo de compilación para primitivos, pero aún requiere la evaluación del argumento) es a través de la sobrecarga. Ver mi pasta ideone .

... public static Class<Integer> typeof(final int expr) { return Integer.TYPE; } public static Class<Long> typeof(final long expr) { return Long.TYPE; } ...

Esto se puede usar de la siguiente manera, por ejemplo:

System.out.println(typeof(500 * 3 - 2)); /* int */ System.out.println(typeof(50 % 3L)); /* long */

Esto depende de la capacidad del compilador para determinar el tipo de expresión y elegir la sobrecarga correcta.

¿Hay una función tipo "typeof" en Java que devuelve el tipo de una variable de tipo de datos primitivo (PDT) o una expresión de operandos PDT?

instanceof parece funcionar solo para tipos de clase.


Pruebe lo siguiente:

int i = 20; float f = 20.2f; System.out.println(((Object)i).getClass().getName()); System.out.println(((Object)f).getClass().getName());

Se imprimirá:

java.lang.Integer java.lang.Float

En cuanto a instanceof , podría usar su homólogo dinámico Class#isInstance :

Integer.class.isInstance(20); // true Integer.class.isInstance(20f); // false Integer.class.isInstance("s"); // false