意外的界限

时间:2016-12-28 07:36:49

标签: java generics compiler-errors

我正在尝试编译这个新类:

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

这个类扩展了类:

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

你能否建议我纠正或向我解释为什么我会收到错误:

  

意外的界限

谢谢!

1 个答案:

答案 0 :(得分:7)

GameType是泛型类型参数名称,因此不能在extends子句中。

如果WindowedGame应该是通用的,请将其定义为

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

如果WindowedGame不是通用的,也许您打算将其定义为

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

BTW,泛型类型参数名称的命名约定通常是单个大写字符(TE等...)。如果不是GameType而是写T,那就不那么容易混淆了。

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

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