0

これは私が質問に言葉にするのが非常に難しかったので、説明させてください。

私は抽象クラスEntityとサブクラスHouseを持っていWarehouseます. 各サブクラスには、異なる値を持つ同じ静的変数があります。

ゲームでボタンが押されると、Actionどのエンティティ サブクラスが作成されてワールドに配置されるかを指定する が作成されます。Entityサブクラスの静的変数を使用して、いくつかを世界に配置する汎用メソッドを作成したいと思います。

クラスがPlaceEntityActionあり、マウスをクリックすると、条件が正しいと仮定して適切なエンティティが配置されます。配置したいクラスをこのアクションに渡して、ジェネリックで動作するようにするにはどうすればよいEntityですか?

ここにいくつかの馬鹿げたコードがあります:

if (mousePressed)) {
    if (some conditions are true) {

        int ex = x pos
        int ey = y pos


        if (world.player.haveFunds(e.COST_ENERGY, e.COST_MONEY,
                    e.COST_RESOURCE)) {
            if (world.places[ex][ey] == 0) {
                world.entities.add(e);
                world.player.addEnergy(-e.COST_ENERGY);
            }
        }
    }
}

eCOST_MONEYなどは静的であり、オブジェクトではなくクラスからアクセスする必要があるため、基本的にどのようにしてそれをアクションに渡すサブクラスにすることができますか?

自分の言いたいことを表現するのに本当に苦労しています。誰かがこれを解読したり、私の問題に関する他の洞察を提供したりできるかもしれません。必要に応じて、その他の必要な情報を提供できます。

編集:

eID システムに基づいて以前に初期化したサブクラスのインスタンスですが、この方法は好きではありません。

4

2 に答える 2

1

Java では、静的変数は多態的ではありません。オプションとして、エンティティで抽象メソッド getCostEnergy、getCostMoney、および getCostResource を宣言し、各サブクラスでこれらのメソッドをオーバーライドして異なる定数を返すようにすることができます。それはあなたのシナリオでうまくいきますか?

于 2013-04-17T18:05:50.150 に答える