java - 如何在 Java 内部类中定义绑定(bind)类型参数

标签 java generics inner-classes bounded-types

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/

相关文章:

java - 重述/简化 : Java generics involving overriding a method

c# - 返回不同类型时是否建议使用多种方法?

java - 如何为用户定义的类实现通用比较器

c++ - 如何定义在两个类之外的模板类内部的非模板类中声明的友元函数?

java - 管理泛型外部类及其内部泛型内部类实例化以及声明各自引用的规则是什么?

java - 使用有向图实现 Dijkstra 算法

java - 违反 Hibernate oracle 完整性约束

java - Applet 生命周期 : what's the practical difference between init() & start(), 和 destroy() & stop()?

generics - 如何在 Rust 中转换泛型原始类型?

Java:参数实现的内部类中不需要的类型删除