Java 限制重写方法的参数类型

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的实例链接 我个人觉得这个设计有一些漏洞。事实

在我的应用程序中,我有一堆不同类型的对象:比如a、B、C、D。 其中一些对象可以与其他对象具有“链接”,这意味着,例如,对象a可以拥有一组类型为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