我提前道歉,我确定以前曾经问过,但我是自学成才的程序员所以我不能为我的生活找出我需要搜索的术语对
我有一个通用类:
public abstract class Directory<T extends Key>
它是另一个类的通用参数:
public class TagDescriptor<T extends Directory, U extends Key>
U
的{{1}}将始终是作为第一个参数传递的TagDescriptor
的通用参数。通过Directory
可以,但无法推断T
?我尝试过这样的事情:
U
但这不正确。在编译时,它应该知道public class TagDescriptor<T extends Directory<U>>
具有通用性;我可以利用它吗?
答案 0 :(得分:1)
您可以使用自引用声明多个类型参数:
public class TagDescriptor<K extends Key, T extends Directory<K>>
注意:K
通常是used, as a name, for key types。
至于为什么声明类型参数K?嗯,这很简单:因为否则编译器无法分辨K是什么:一个具体的类,一个名为K的接口?或者是名为K?
的类型参数例如,这是完全合法的:
public interface K {}
public class TagDescriptor<T extends Directory<K>>