java - Java内部类写类型参数

标签 java generics

做和做有什么区别

public class BST<Key extends Comparable<Key>, Value> {

    public class Node<Key, Value> {
       Key key;
       Value val;
    }
}

和做

public class BST<Key extends Comparable<Key>, Value> {

    public class Node {
       Key key;
       Value val;
    }
}

即内部类的类型参数重要吗? 哪种实现方式更好?

最佳答案

您似乎认为这两者是等价的 - 但事实并非如此。 上面的例子声明了两个泛型类,下面的例子声明了一个泛型类和一个非泛型内部类。

例如,在顶部声明中,您可以创建这样的实例...

BST<MyComparable, String>.Node<Integer, Boolean> x = new ...

...因为类型参数在两个类之间是不同的 - 您刚刚选择为内部泛型类型参数赋予与外部类中的类型参数相同的名称,但是它们没有关系。

如果您在第二个示例中尝试这样做,您将收到错误消息,因为内部类 Node 不是通用的。在第二个示例中,Node 字段的类型必须匹配外部类型参数。

关于java - Java内部类写类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290637/

相关文章:

java - 检查数组中的字符以构建回文列表

java - 自定义 Java 核心类

java - 在 Java 中运行 For 循环超过十亿次

c# - 我写了有趣的 Linq 代码,但我不知道它如何工作或为什么工作

Java 将 Collection<T> 映射到 Collection<U>

c# - 泛型类的静态成员是否在类型之间共享

java - 如何在 Primefaces 数据表中表示嵌套数据?

Java 字符串连接到字符串

java - 涉及通配符类型的未经检查的强制转换

使用引用类型和可空值类型的 C# 泛型类