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>>> {
}
}
使用上面的代码,我得到以下编译错误。
Syntax error on token "extends", , expected
但是,如果我按如下方式更改 Peg 的定义,它会起作用:
private class Peg<T extends Disk<? extends Comparable<E>>> extends Stack<Disk<? extends Comparable<E>>> {
}
我不想使用通配符。有没有办法将其更改为命名参数?
最佳答案
你不能那样使用泛型。只需将类型(而非绑定(bind))传递给扩展类型即可。
编译:
public class TowerOfHanoi<E> {
private class Disk<T extends Comparable<E>> {
}
private class Peg<T extends Disk<Comparable<E>>> extends Stack<Disk<Comparable<E>>> {
}
}
关于java - 如何在 Java 内部类中定义绑定(bind)类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448800/