0

put でエラーが発生する理由を誰か教えてもらえますか?

static HashMap<Class, ? extends BaseSystem> systems;

public <T extends BaseSystem> EntityManager()//constructor
{
    systems=new HashMap<Class, T>();
} 

public static <T extends BaseSystem> void addSystem(Class c, T system)//store a system for later reference
{
    systems.put(c, system);
}
4

1 に答える 1

15

最も可能性の高い問題は、最初の方法の T と 2 番目の方法の T が自動的に同じと見なされないことです。他の作品では、BaseSystem を拡張しているが無関係である可能性のある 2 つの異なる型があります。

クラスで T を一度定義して一貫して使用するか、ジェネリックを使用せずに BaseSystem のみを使用する必要があります。

ところで:より基本的なレベルでは、静的初期化とインスタンス初期化を混同しないでください。コンストラクターで静的フィールドを設定している場合、設計上の問題があります。

クラスとシステムの間に関係はありますTか?

于 2013-01-14T08:44:38.240 に答える