Cita: Esto no se hace , no debes preguntarle a un objeto de que tipo es , porque rompe con el polimorfismo supongamos que en vez de tener un jerarquia de dos objetos sea de n, tendrias que tener n condicionales uno por cada subtipo de la clase madre.
Claro que puedes preguntarle al objeto de qué tipo es, de hecho para hacer downcast es casi obligatorio. Y lo de que rompe el poliformismo no tiene sentido, es parte del polimorfismo ¿por qué crees que existe instanceof?
Tal y cómo lo ha puesto NeoAres no, porque esa condición equivale a (instanceof Person), pero un if(p instanceof Child)/elseif(p instanceof Parent)/else para pasar los elementos Person de un List a su clase correspondiente sería algo muy común.