public class TowerOfHanoi<E> {
private class Disk<T extends Comparable<E>> {
}
private class Peg<S extends Disk<T extends Comparable<E>>> extends Stack<Disk<T extends Comparable<E>>> {
}
}
使用上面的代码,我收到以下编译错误。
令牌“extends”的语法错误,预期
但是,如果我按如下方式更改Peg的定义,则可以:
private class Peg<T extends Disk<? extends Comparable<E>>> extends Stack<Disk<? extends Comparable<E>>> {
}
我不想使用通配符。有没有办法将其更改为命名参数?
答案 0 :(得分:3)
你不能使用那样的泛型。只需将类型(不是绑定)传递给扩展类型。
编译:
public class TowerOfHanoi<E> {
private class Disk<T extends Comparable<E>> {
}
private class Peg<T extends Disk<Comparable<E>>> extends Stack<Disk<Comparable<E>>> {
}
}
答案 1 :(得分:1)
你有什么理由不能使E
具有可比性吗?
public class TowerOfHanoi<E extends Comparable<? super E>>
{
private class Disk implements Comparable<Disk> { }
private class Peg extends Stack<Disk> { }
}