2016-12-28 4 views
1

私はこの新しいクラスをコンパイルしようとしている予期しないバウンド

public class WindowedGame 
     extends GameContainer<GameType extends Game<Graphics2D>> { 
    ... 
} 

このクラスはクラスを拡張:

public abstract class GameContainer<GameType extends Game<?>> { 
    .... 
} 

はあなたが私に修正を示唆または私はエラーを取得する理由を私に説明できます:

予期しない範囲

ありがとう!

+0

コードから関連するものをすべて削除しました。もっと文脈を与えてください。 – rekire

+3

@rekire彼はこの質問に答えるために必要なすべてを掲示しました。 – Tom

答えて

4

GameTypeは汎用タイプのパラメータ名であるため、extends節に入れることはできません。

WindowedGameは、一般的なことWindowedGameはジェネリックすべきではない場合

public class WindowedGame<GameType extends Game<Graphics2D>> 
     extends GameContainer<GameType> { 
    ... 
} 

として定義し、おそらくあなたは、BTW

public class WindowedGame 
     extends GameContainer<Game<Graphics2D>> { 
    ... 
} 

としてジェネリック型の命名規則を、それを定義することを意味する必要がある場合パラメータ名は多くの場合、単一の大文字(T,Eなど)です。 GameTypeの代わりにTと書くと、混乱は少なくなります。

public class WindowedGame<T extends Game<Graphics2D>> 
     extends GameContainer<T> { 
    ... 
} 

public abstract class GameContainer<T extends Game<?>> { 
    .... 
} 
+0

"GameTypeはジェネリック型のパラメータ名なので、extend節に入れることはできません。" それを明確にすることはできますか? ここでGameTypeの使用が間違っていることを意味しますか: GameContainer > – yusif

関連する問題