Initialize a new object from class in Enum

前端 未结 8 576
轻奢々
轻奢々 2021-01-03 00:27

I have an Enum called Plugins:

public enum Plugins {

    ROTATING_LINE (plugin.rotatingline.RotatingLine.class),
    SNOW_SYSTEM (plugin.snow.SnowSystem.cla         


        
8条回答
  •  滥情空心
    2021-01-03 01:25

    Create an interface for the plugins

    public interface Plugin{
         setShapeType();
         setX();
         setY();
         ...
      }
    

    Create a method on the enum that creates an instance of Plugin.

    public enum Plugins {
    
            ROTATING_LINE (plugin.rotatingline.RotatingLine.class),
            SNOW_SYSTEM (plugin.snow.SnowSystem.class);
    
            private Class c;
    
            private Plugins (Class c) {
                this.c = c;
            }
    
            // This acts as a constructor that takes args, I am assuming the args you need 
            public Class createInstance(String shapeType,int x, int y) {
                Plugin plugin = c.newInstance();
                plugin.setShapeType(shapeType);
                plugin.setX(x);
                plugin.setY(y);
                return plugin;
            }
    
        }
    

    Instantiate in loop

    List myPlugins = new ArrayList();
    
    for (Plugins plugins : Plugins.values()) {
        myPlugins.add(plugin.createInstance(Shaped.parent, 400, 400));
    }
    

    Please note this is Psuedo Code

提交回复
热议问题