gpt4 book ai didi

Java 递归通用模板 : what does this mean by . .. S extends Writer> extends Entity

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:43 25 4
gpt4 key购买 nike

有人可以解释下面这种相当复杂的递归通用模板用法吗?

public abstract class Data<E extends Data<E, S>,
S extends Writer<E>> extends Entity<E,S>

在使用递归泛型时,我们应该记住什么,就像上面那样。这些类型之间的关系和规则如何,这里是 ES

如果有的话,请提供一些关于这种通用用法的资源/链接/书籍。我知道有一本书在谈论这个,Effective Java,第 2 版,作者 Joshua Bloch(第 27 项)

最佳答案

让我们从最简单的开始

S extends Writer<E>

任何类型 S 的类都必须是类 E 的编写器

extends Entity<E,S>

这里只是继承,Data类继承了Entity类。

E extends Data<E, S>

用于 E 的任何类本身都必须继承自 Data 类,并使用自己的类型和与其兼容的编写器继承/实现 Data 的通用方法。

E 和 S 之间的关系应该是这样的:

//E = Example, S = ExampleWriter
public class ExampleWriter implements Writer<Example>{
//...
}
public class Example extends Data<Example,ExampleWriter>{
//...
}

请记住:使用泛型提供 Writer<SomeChildOfExample>Writer<SomeParentOfExample>可能会或可能不会产生编译器错误,这取决于两种泛型类型中定义的泛型方法。

关于Java 递归通用模板 : what does this mean by . .. S extends Writer<E>> extends Entity<E,S>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656956/

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