Java.lang.reflect.Field.getType

Existe alguma forma de saber via reflect se um atributo e um tipo primitivo?

Tentei fazer algo como:

if( f.getType() instanceof Object ) {
	System.out.println( "objeto" );
}
else {
	System.out.println( "tipo primitivo" );
}

So que o getType() retorna um objeto class :frowning:

No braço mesmo. Isto deve imprimir “true” “true”.

import java.lang.reflect.*;

class TestReflection {
    public int field1 = 1;
    public Integer field2 = new Integer(2);
    
    public static void main (String[] args) throws Exception {
        Class trClass = TestReflection.class;
        Field f1 = trClass.getField ("field1");
        Field f2 = trClass.getField ("field2");
        System.out.println (f1.getType().equals (int.class));
        System.out.println (f2.getType().equals (Integer.class));
    }
}
System.out.printf("int = %b Integer = %b\n", int.class.isPrimitive(), Integer.class.isPrimitive());

vai imprimir
int = true Integer = false

[quote=louds] System.out.printf("int = %b Integer = %b\n", int.class.isPrimitive(), Integer.class.isPrimitive());
[/quote]

Nao conhecia esse metodos isPrimitive porem não consegui utiliza-lo no meu exemplo:

if( f.getType().getClass().isPrimitive() ) {
	System.out.println("Tipo Primitivo: " + f.getType());
}
else {
	System.out.println("Objeto: " + f.getType());
}

Acho que o que estou fazendo errado e utilizar o getClass pois como disse anteriormente este retorna uma class que e um object :frowning: Mas nao estou conseguindo ver uma maneira de fazer o que quero!

Obrigadão Louds, não sabia que havia esse método (eu não li a P… do Javadoc :mrgreen: )

Então dá para modificar (vai imprimir “true false”):

import java.lang.reflect.*;

class TestReflection {
    public int field1 = 1;
    public Integer field2 = new Integer(2);
    
    public static void main (String[] args) throws Exception {
        TestReflection tr = new TestReflection();
        Class trClass = TestReflection.class;
        Field f1 = trClass.getField ("field1");
        Field f2 = trClass.getField ("field2");
        System.out.println (f1.getType().isPrimitive());
        System.out.println (f2.getType().isPrimitive());
    }
}

Note que NÃO HÁ NENHUM instanceof neste código aqui.