我想在类型 T 中键入类成员以及方法的参数,它必须是一个 Node 并实现我自己的接口(interface) Linkable。
基本上,我想将变量限制在 Node 和 Linkable 之间的继承“树”的一小部分。原因是我不想在类中进行所有转换,这取决于我是需要调用 Node 的方法还是 Linkable 的方法。
目前在我的项目中,我知道我只使用了实现可链接的节点,但这个条件并没有以任何方式强制执行。
下面的伪代码(仅用于说明):
public class MyClass <T extends ??> {
T node1;
Bounds bounds1;
bounds1 = node1.boundsInParentProperty(); //Node specific method
node1.linkableSpecificMethod(); //method defined in Linkable interface
//....
}
最佳答案
有两件事可以帮助您:
- 泛型不区分接口(interface)和类。
- 泛型支持用于列出多种类型的符号。
也就是说,您可能想要的是:
class YourClass<T extends Node & Linkable> {
}
关于java, generics - 如何参数化一个类型为 T 的类,这两个类型都是 : extends and implements sth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27093068/