Pasar cualquier tipo de objeto y recuperarlo

Estoy realizando un proyecto del que se trata de unas pantallas de inserción, eliminación y modificación de datos. Sé que podría poner un filtro (con un select desplegando todos los tipos de animales), pero por decisión superior tiene que ser así.

public class FiltroGato extends FiltroAnimal {     public int id;     public boolean esPersa;     // getters & setters }  public class FiltroPerro extends FiltroAnimal {     public int id;     public razaPeligrosa;     // getters & setters }  public class FiltroAnimal {     public String nombre;     public int edad;     // getters & setters } 

Me gustaría poder ir almacenando el filtro, sin importar que éste sea de FiltroPerro o FiltroGato, poder hacer algo así:

FiltroGato filtro = new FiltroGato(); setFiltroAnimal(filtro); 

¿Como se podría hacer?, he estado probando con los Java Generic, pero no logro conseguirlo.

Un saludo y gracias.