Necesitaba llamar a un método pero obteniendo como retorno siempre un Object. Esto para poder evaluar getMetodo() == null, sin importar si en realidad el método devolvía un primitivo.
Si el método devuelve un primitivo (ej. un int, un boolean, etc), la sentencia getMetodo() == null no compila.
El problema surgía porque las clases eran generadas dinámicamente desde una plantilla xml, y no podía conocer si el valor devuelto sería un Object o un primitivo hasta después de recibir el xml y generar las clases dinámicamente.
Al final la solución era bastante sencilla…
—-
import java.beans.Expression; public class TestReturnToObject { /* Invocar un metodo y obtener SIEMPRE un Objeto como resultado. */ public static void main(String[] args) throws Exception { TestReturnToObject t = new TestReturnToObject(); t.test(); } public void test() throws Exception { BeanTest bean = new BeanTest(); // Ejecuto el metodo "getValue" Expression expr = new Expression(bean, "getValue", new Object[0]); expr.execute(); Object o = expr.getValue(); // Siempre obtengo un Object if (o == null) { System.out.println("valor nulo"); } else { System.out.println(o.getClass().getName() + " : " + o.toString()); // java.lang.Integer : 1 } } public class BeanTest { // Esta es la clase que en realidad se genera dinamicamente // El metodo, en esta oportunidad devuelve un primitivo. public int getValue() { return 1; } // El mismo metodo puede generarse tambien como un Object // segun como venga la plantilla. Algo que no puedo saber de antemano // // public String getValue() { // return new String("hola"); // } } }
–
¿Te fue útil?
..