gpt4 book ai didi

Java Generics调用self类解释

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:43:55 26 4
gpt4 key购买 nike

Dave Syer在包中编写了以下类,org.springframework.security.oauth2.config.annotation.builders

    public class ClientDetailsServiceBuilder<B extends ClientDetailsServiceBuilder<B>> extends
SecurityConfigurerAdapter<ClientDetailsService, B> implements SecurityBuilder<ClientDetailsService> {
}

我在理解这段代码时遇到了一些困难。任何人都可以在这里解释泛型的用法以及 Dave 在这里试图实现的目标吗?

最佳答案

它被称为递归类型绑定(bind)。这里B根据 ClientDetailsServiceBuilder 定义.但由于这是刚刚声明的类型,B再次出现以满足类型参数。

我发现一个更通用的解释:http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ106

此模式的另一个很好的例子:

public interface Tree<T extends Tree<T>> {
List<T> getChildren();
}

此定义生成了 Tree 的子类型(实现)自动返回其类型参数的子项,该参数必须是 Tree甚至可以是他们的实际类型。如果返回类型只是 List<Tree> ,期望子类型的调用者可能必须强制转换。

关于Java Generics调用self类解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887686/

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