0

私はそのようなコードを持っています:

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);
            }
        }

    }
}

Factoryデコレータを作ってみました。とにかく - これは私が得るエラーです: Swarm.SwarmEnemy.SwarmEnemy1 を含む囲んでいるインスタンスが必要です。

4

1 に答える 1

1

SwarmEnemy1SwarmEnemy2をSwarmEnemyクラスの外に移動する必要があります。

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);
        }
    }
}
于 2013-02-13T18:46:40.680 に答える