Jen, su pregunta no pone ningún contexto sobre por qué quiere usar un genérico. Sería realmente útil si declaras qué es lo que estás tratando de hacer y por qué estás usando genéricos. Los genéricos existen IMHO principalmente para evitar tener que hacer bloqueos de clase en todas partes al poner cosas y sacarlas de colecciones que están diseñadas para ser titulares genéricos de tipos. Este un poco implica iteración sobre un montón de cosas, pero no necesariamente.
Lo que quiero decir es que no vi ninguna parte de su clase o código que requiriera poder crear una versión personalizada de la clase mono que requiriera iterar sobre los entornos. Si este no es el caso, probablemente ni siquiera necesites medicamentos genéricos. En cambio, es probable que desee una inyección de dependencia. La clase de mono debe tener un constructor que tome un entorno. El entorno es una interfaz (o clase base simple). La interfaz tiene varias operaciones predeterminadas, como getBathroomLocation() y getFoodLocation().En lugar de utilizar genéricos para crear un tipo de mono que vive en el zoológico, se crea un mono y se inyecta la dependencia de las cuales el medio ambiente en que vive.
Monkey monkey = new Monkey(new CostaRicaJungle());
Más adelante, se puede establecer este entorno para algo diferente. El mono salvaje es capturado, y ahora hacer
monkey.setEnvironment(new BronxZoo());
Más tarde, el mono recibe una actualización condiciones de vida, y lo hace un
monkey.setEnvironment(new SanDiegoZoo());
Sí, supongo 'tipo bruto' es el valor predeterminado. El único problema son las advertencias. – Tom
¿alguien puede verificar si esta respuesta es correcta? http://stackoverflow.com/questions/40466553/extending-arraylist-with-determined-default-member-type – 1412