que tienen una función de Java llamado testForNull¿Hay alguna forma en Java para encontrar el nombre de la variable que se pasó a una función?
public static void testForNull(Object obj)
{
if (obj == null)
{
System.out.println("Object is null");
}
}
lo uso para probar varios objetos para asegurar que no son nulos. Pero, no puedo decir el nombre de la variable de esa manera.
Por ej. si digo
testForNull(x);
testForNull(y);
testForNull(z);
No puedo decir cuál de las tres líneas provocó la salida "El objeto es nulo". Por supuesto, puedo simplemente añadir otro parámetro a la función y tener algo como
testForNull(x, "x");
testForNull(y, "y");
testForNull(z, "z");
Pero quiero saber si es posible deducir el nombre de la variable, sin pasar de forma explícita. Gracias.
Ni siquiera con [reflexión] (http://stackoverflow.com/questions/744226/java-reflection-how-to-get-the-name-of-a-variable). – paislee
No hay nada en el lenguaje para dar cuenta de esto. Sin embargo, imagino que podría hacerse con una herramienta de procesamiento adicional (por ejemplo, inspeccionar/modificar bytecode). Alternativamente, use una herramienta que pueda insertar las plantillas apropiadas autocompletadas con los valores coincidentes ;-) –
su afirmación 'No puedo decir cuál de las tres líneas causó el resultado de' El objeto es nulo '.' solo es cierto en tu salida. Podría usar la nueva Excepción ("el objeto es nulo"). PrintStackTrace para averiguar exactamente dónde estaba, o podría usar un depurador y poner allí un punto de interrupción. Esto se parece más a algo que requiere un mejor registro, o un depurador, en lugar de una función de idioma. –