Java 限制重写方法的参数类型
在我的应用程序中,我有一堆不同类型的对象:比如a、B、C、D。 其中一些对象可以与其他对象具有“链接”,这意味着,例如,对象a可以拥有一组类型为B的对象 我亲自处理了这个问题,创建了一个接口:Java 限制重写方法的参数类型,java,design-patterns,interface,Java,Design Patterns,Interface,在我的应用程序中,我有一堆不同类型的对象:比如a、B、C、D。 其中一些对象可以与其他对象具有“链接”,这意味着,例如,对象a可以拥有一组类型为B的对象 我亲自处理了这个问题,创建了一个接口: public interface Linkable<T extends Item>{ public link(List<T extends Item>); } 我的示例目的是,B的实例只能与A的实例链接,而C的实例不能与B的实例链接 我个人觉得这个设计有一些漏洞。事实
public interface Linkable<T extends Item>{
public link(List<T extends Item>);
}
我的示例目的是,B的实例只能与A的实例链接,而C的实例不能与B的实例链接
我个人觉得这个设计有一些漏洞。事实上,我认为需要更多我没有考虑的限制。当我重写类A、B、C中的Linkable::link
方法时,它必须接受Item的子类型,因此,在C的情况下,我将能够添加到B实例的链接,因为I1
和I2
都是Item
的子类型
此外,我觉得项
类型也应该限制为那些实现可链接
接口的人
如何在覆盖期间限制类型?我遗漏了什么吗?如果人们不知道其中的哪些元素可以接受,他们应该如何调用
Linkable::link
?也许那个界面是无用的,你应该把它扔掉A
、B
和C
仍然可以有自己的link
方法。我想用它来标记哪些对象“支持”链接操作,并强制这些类定义链接方法。Linkable::link将只接受对象实现项。我的问题是,我不知道如何对特定类进行更多的限制。这个接口的客户机实际如何使用它?他们将调用::link(List listOfBs)。我希望他们不能执行B::link(List listOfCs)。您不能使用instanceof操作符检查对象是否应该链接吗
ITEM
|
------------
| |
I1 I2
A implements I1, I2
B implements I1
C implements I2