Algo que quisiera recalcar es que la solución a este problema bien podría haber sido decir que se utilice un codigo como el siguiente:
Persona.class.isAssignableFrom(obj.getClass())
Donde no solo sabés que obj es puede ser una persona, sino que además puede ser un una subclase que puede ser asignado a una referencia de tipo persona.
O simplemente que utilice el viejo y conocido instanceof.
Pero me parece muchísimos más importante que cada vez que se quiera programar algo nos pongamos 5, 10 minutos para pensar en los objetos que van a formar parte del sistema y la relación que habrá entre ellos (eso se que es una de las definiciones de diseño), antes que en las "hakereadas" que me tengo que mandar para poder solucionar algún problema diario, recuerden que la "hackereada" de alguien de ayer, me puede tener hoy hasta las 21:00 en el laburo tratando de encontrarle solucion a algo que no se contemplo en su momento.
Por ejemplo, el tema de andar preguntando por todos lados sobre la clase del objeto, me lleva a que cada vez que quiero hacer algo con una instancia de esa clase tengo que estar preguntandole al objeto de que clase es. Mientras más cosas quiera hacer yo con las instancias de esa clase, más veces voy a preguntar por la clase de los objetos en todo mi sistema, y si hago eso con tooooodas las clases de mi sistema, es un caos total. Y todo esto, simplemente porque no me puse a pensar un minuto y haberme dado cuenta que la solución al problema era el uso del polimorfismo, con lo cual dejo en un solo lugar las funcionalidades para la clase y todas esas ventajas lindas que nosotros sabemos que tiene el trabajar con objetos y polimorfismo.
Espero que a alguien le interese este tema que me parece que es más crucial de lo que parece. La gente que ya esté hace más de 1 o 2 años en esto de la programación se habrá dado cuenta que aprenderse un nuevo lenguaje (C, C++, Java, C#, Groovy, Ruby, etc), es cuestión de aprenderse una nueva sintaxis y semantica, todo eso es solo una herramienta, lo más importante me parece a mi, es saber que hacer con esa herramienta para poder construir en lugar de destruir :-S.
Disculpen que me cuelgue nuevamente de un thread tan viejo, pero como dice un amigo mío: "tenía ganas de decir esto y lo dije."
Saludos
Claudio.
PD: Geronimo, espero sepas entender que esto no es de ninguna manera una crítica hacia tu persona, sino que intenta ser una crítica constructiva y una opinión hacia lo que hacemos con tanto gusto que es programar.