Поскольку вы перебираете плагины, я думаю, что конструкторы всех плагинов имеют одинаковое количество и тип параметров.(Хотя я не понимаю ваших plugins.add(...)
.)
В любом случае, если вы хотите использовать Enums, я бы сделал следующее, используя реализации метода, специфичного для констант, вместо токенов типа / отражение :
public enum PluginTypes {
ROTATING_LINE { Plugin create(int x, int y){
return new plugin.rotatingline.RotatingLine(x,y);} },
SNOW_SYSTEM { Plugin create(int x, int y){
return new plugin.snow.SnowSystem(x,y);} };
abstract Plugin create(int x, int y);
}
public interface Plugin {
//...
}
Тогда ваш цикл будет выглядеть примерно так:
List<Plugin> plugins = new ArrayList<Plugin>();
for (PluginTypes pt : PluginTypes.values()) {
plugins.add(pt.create(400, 400));
}
С другой стороны, если вы все равно знаете классы реализации Plugin, почему бы не использовать их напрямую вместо этогоиз через перечисление PluginTypes?