2013-02-13 75 views
0

我有这样的代码:包含Swarm.SwarmEnemy.SwarmEnemy1一个封闭的情况下,需要

public class Swarm { 

    public SwarmEnemy getEnemy() { 
     return new SwarmEnemy.SwarmEnemy1(SwarmEnemy.NORMAL_SWARM); // <-ERROR 
    } 

    private class SwarmEnemy extends BeamEnemy { 

     public static final int NORMAL_SWARM = 0; 

     public SwarmEnemy(int hp, int swarmType) { 
      super(0, 0, hp, 0); 
      switch (swarmType) { 
       case 0: 
        System.out.println("constructor 1"); 
        break; 
      } 
     } 

     private class SwarmEnemy1 extends SwarmEnemy { 

      public SwarmEnemy1(int swarmType) { 
       super(25, swarmType); 
      } 
     } 

     private class SwarmEnemy2 extends SwarmEnemy { 

      public SwarmEnemy2(int swarmType) { 
       super(25, swarmType); 
      } 
     } 

    } 
} 

我试图让工厂装饰。无论如何 - 这是我得到的错误:包含Swarm.SwarmEnemy.SwarmEnemy1的封闭实例是必需的这是什么意思,我应该如何重构我的代码工作?

回答

1

你需要移动SwarmEnemy1SwarmEnemy2SwarmEnemy类。

public class Swarm { 

    public SwarmEnemy getEnemy() { 
     return new SwarmEnemy1(SwarmEnemy.NORMAL_SWARM); // <-ERROR 
    } 

    private class SwarmEnemy extends BeamEnemy { 

     public static final int NORMAL_SWARM = 0; 

     public SwarmEnemy(int hp, int swarmType) { 
      super(0, 0, hp, 0); 
      switch (swarmType) { 
       case 0: 
        System.out.println("constructor 1"); 
        break; 
      } 
     } 
    } 

    private class SwarmEnemy1 extends SwarmEnemy { 

     public SwarmEnemy1(int swarmType) { 
      super(25, swarmType); 
     } 
    } 

    private class SwarmEnemy2 extends SwarmEnemy { 

     public SwarmEnemy2(int swarmType) { 
      super(25, swarmType); 
     } 
    } 
} 
相关问题