Como ya te han dicho, para que sea de alguna utilidad, tienes que saber algo de los objetos.
Lo que se me ocurre es, visto que lo que quieres es hacer eso de los listados, que una forma de hacerlo es usar un interfaz común para todos los objetos que pueden salir en un listado. Esto si los quieres tratar a todos igual, claro.
Me explico un poco. Imagina que en tu ArrayList puede haber Perros, Gatos y Ardillas. Y quieres hacer una clase que pueda pintar cualquiera de esos animales en forma de listado. Una forma de hacerlo es lo que preguntabas: Que sea la clase PintadorDeListas la que investigue qué clase es y la pinte.
Pero otra forma de hacerlo es poner alguna restricción sobre las clases que pueden pintarse: hacer que todas implementen el interfaz Pintable (por llamarlo de alguna forma).
Haces un interface Pintable que defina algunos métodos que necesita el PintadorDeListas. Para no complicarlo mucho lo haré sencillo: Podría ser algo como getPropiedades() y getValores(). Luego haces que todas las clases que vayan a poder ser pintadas tengan que implementar Pintable y por tanto den esos 2 métodos.
PintadorDeListas no necesitaría saber qué objeto Perro, Gato o Ardilla es. Sólo que es Pintable:
Código:
Pintable bisho = (Pintable) it.next();
Y ahora podrías llamar a bisho.getPropiedades() y bisho.getValores().
Esto lo he contado muy simplificado, claro. Puedes mejorarlo mucho.