通用接口将自身作为参数。递归泛型?

2022-09-02 01:55:17

免责声明:我对Java泛型没有太多的经验,但我和我的同事们花了一个小时试图破译一个结构如下的界面:

interface HasAttributes<A extends HasAttributes<A, B>, 
                        B extends HasAttributesType<B>> extends Identification<B> {

当接口泛型采用本身就是的类型参数时,它到底是什么意思?这是做什么的?


答案 1

这是有道理的 - Java的Enum类是一个类似情况的好例子:

public abstract class Enum<E extends Enum<E>>
    implements Comparable<E>, Serializable

在这个关于枚举的 Stack Overflow 问题中有一些启发性的答案,应该可以为您阐明泛型的这种特殊用法,并且比我更优雅地回答这个问题。


答案 2

推荐