Ho una funzione Java chiamato testForNullC'è un modo in Java per trovare il nome della variabile che è stata passata a una funzione?
public static void testForNull(Object obj)
{
if (obj == null)
{
System.out.println("Object is null");
}
}
lo uso per testare più oggetti per assicurarsi che non sono nulli. Ma, non sono in grado di dire il nome della variabile in questo modo.
Ad es. se dico
testForNull(x);
testForNull(y);
testForNull(z);
Non posso dire quale delle tre linee ha causato il "Oggetto è nullo" in uscita. Naturalmente, posso semplicemente aggiungere un altro parametro alla funzione e avere qualcosa di simile
testForNull(x, "x");
testForNull(y, "y");
testForNull(z, "z");
Ma voglio sapere se è possibile dedurre il nome della variabile senza passare esplicitamente. Grazie.
Neanche con [reflection] (http://stackoverflow.com/questions/744226/java-reflection-how-to-get-the-name-of-a-variable). – paislee
Non c'è niente nella lingua per tener conto di ciò. Tuttavia, immagino che potrebbe essere fatto con uno strumento di elaborazione aggiuntivo (ad esempio, ispezionare/modificare bytecode). In alternativa, usa uno strumento che può inserire i modelli appropriati riempiti automaticamente con valori corrispondenti ;-) –
la tua affermazione "Non riesco a capire quale delle tre linee abbia causato l'output" L'oggetto è nullo ". è vero solo nel tuo output. È possibile utilizzare la nuova eccezione ("oggetto è null"). PrintStackTrace per scoprire esattamente dove si trovava, oppure è possibile utilizzare un debugger e inserire lì un punto di interruzione. Questo sembra più qualcosa che richiede una registrazione migliore, o un debugger, invece di una funzione linguistica. –