Tengo un montón de diferentes clases de enemigos que se mueven y se comportan de manera diferente y, a menudo, se genera más de una instancia de ellos en la pantalla, ya que es esencialmente aleatorio, por lo que necesito usar un ArrayList para poder controlar el comportamiento de cada individuo. clase enemiga.
Pero, esto me deja con un montón de ArrayLists como este:
//Example: ArrayList<Enemy1> enemies = new ArrayList<Enemy1>(); ArrayList<Enemy2> enemies = new ArrayList<Enemy2>(); ArrayList<Enemy3> enemies = new ArrayList<Enemy3>(); ArrayList<Enemy4> enemies = new ArrayList<Enemy4>(); ArrayList<Enemy5> enemies = new ArrayList<Enemy5>();
¿Hay alguna forma de cambiar el tipo de datos que almacenará ArrayList para que pueda vaciar y reutilizar diferentes instancias del mismo ArrayList? ¿O cualquier cosa, solo para no tener que tener mil millones de ArrayLists en mi código?
Información adicional: estoy haciendo esto usando la biblioteca de procesamiento de Java, no estoy seguro de si cambia algo.
Lo siento si la respuesta es descaradamente obvia para ti, por favor no seas grosero.
Todas sus clases EnemyX
deben heredar de una interfaz o clase abstracta, luego puede usar una List<Enemy>
que puede contener cualquier objeto EnemyX
Interface Enemy{} Class Enemy1 implements Enemy{} Class Enemy2 implements Enemy{} Class Enemy3 implements Enemy{}
Usar
List<Enemy> l = new ArrayList<>(); l.add(new Enemy1()); l.add(new Enemy2()); l.add(new Enemy3());
puede definir una Enemy
como (abstracta o sin resumen) con los métodos requeridos y extender todas las demás clases Enemy...
desde ella y luego acceder a las subclases desde la superclase:
public class Enemy { } public abstract class Enemy { } class Enemy1 extends Enemy { } class Enemy2 extends Enemy { } class Enemy3 extends Enemy { } class Enemy4 extends Enemy { } public static void main(String[] args) { List<Enemy> l = new ArrayList<>(); l.add(new Enemy1()); l.add(new Enemy2()); l.add(new Enemy3()); }