gpt4 book ai didi

java - 递归类型边界的使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:36 24 4
gpt4 key购买 nike

我的一个 friend 在 Java API ( https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html) 中发现了这个花絮,

Class Enum<E extends Enum<E>>

并通过阅读以下文章 https://docs.oracle.com/javase/tutorial/java/generics/genTypes.html我可以理解上述行在语法上的含义,但从给出的示例中我无法找出 Enum 类之外的用例(查看源代码)。

我想详细了解上述可能提供解决方案的可能问题。

最佳答案

例如,允许子类使用它们自己的类型很有用

想象一个类

class Node {
Node next;
}

如果你扩展那个类,你就会被 Node 困住。

class SpecialNode extends Node {
void foo() {
// euwww
SpecialNode nextNode = (SpecialNode) this.next;
}
}

你也不能像这样定义它

class Node<T> {
T next;
}

因为这将允许 T 的任何内容。你真的想要一个 Textends Node 或者你不能再在 Node 中使用 T 作为 Node 而不进行强制转换.不过,它适用于子类(class)。

通过使用像这样的递归边界

class Node<T extends Node<T>> {
T next;
}

您将 T 限制为您自己或您自己的子类,然后允许您这样做

class SpecialNode extends Node<SpecialNode> {
void foo() {
SpecialNode nextNode = this.next; // type-safe!
}
}

这样,父类和子类都可以完全类型安全地访问其抽象级别上的所有内容。

关于java - 递归类型边界的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com