java - 获取泛型类型的泛型类型

标签 java

我提前道歉,我确定之前有人问过这个问题,但我是一个自学成才的程序员,所以我终究无法弄清楚我需要搜索的术语。

我有一个泛型类:

public abstract class Directory<T extends Key>

是另一个类的泛型参数:

public class TagDescriptor<T extends Directory, U extends Key>

TagDescriptorU 将始终是作为第一个参数传递的Directory 的通用参数。通过T就可以了,但是U就没有办法推断了吗?我试过类似的东西:

public class TagDescriptor<T extends Directory<U>>

但这是不正确的。在编译时它应该知道 Directory 有一个泛型;我可以利用它吗?

最佳答案

您可以声明多个类型参数,并以自引用为界:

public class TagDescriptor<K extends Key, T extends Directory<K>>

注意:K 通常是 used, as a name, for key types .

至于,为什么要声明类型参数K?好吧,这很简单:因为否则编译器无法判断 K 是什么:一个具体的类,一个名为 K 的接口(interface)?还是名为 K 的类型参数?

例如,这将是完全合法的:

public interface K {}

public class TagDescriptor<T extends Directory<K>>

关于java - 获取泛型类型的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42321119/

相关文章:

java - 使用正则表达式解析 Java 语法

Java JNA 未满足链接错误

java - "Selector loop waiting on select"运行多个使用 wiremock stub 的测试用例时

java - 在 Java 中创建两个线程

java - “If”语句未通过检查涉及字符串数组

java - 如何在 C# 中使用匿名类重新实现 Java 监听器

java - 将相同类型的对象序列化到同一个文件

java - raf.seek(pos) 的类似物

java - 从 C 调用 Java

Java 8 ParallelStream 内部 Web 应用程序容器