import java.util.Random; public class EntityWithIlumCreator { private final Object[] entityArr; private final Object[] IlumArr; int entitiesCount = 0; int ilumCount = 0; public EntityWithIlumCreator(int countEntities, int countExtra) { entityArr = new Object[countEntities]; IlumArr = new Object[countExtra]; } public void Insert(T entityAirbus) { if(entitiesCount < entityArr.length) { entityArr[entitiesCount] = entityAirbus; entitiesCount++; } } public void Insert (U extra) { if(ilumCount < IlumArr.length) { IlumArr[ilumCount] = extra; ilumCount++; } } public DrawingAirbus getEntityWithExtra() { Random random = new Random(); int getEntityRandomIndex = random.nextInt(entityArr.length); int getExtraRandomIndex = random.nextInt(IlumArr.length); EntityAirbus airbus = (T)entityArr[getEntityRandomIndex]; IDrawingIlum ilum = (U) IlumArr[getExtraRandomIndex]; if (airbus instanceof EntityAdvancedAirbus) { return new DrawingAdvancedAirbus(airbus, ilum); } return new DrawingAirbus(airbus, ilum); } }