2

在java中,如果你有一个需要泛型来扩展特定类的对象,但你想用该类的扩展来实现它,有没有办法让java知道你实际上并没有违反自己的规则?下面的示例代码假设这没有意义。

public interface WantedInterface extends StaticInterface<WantedObject>

public class WantedObject extends OlderObject

public class OlderObject extends UsefulObject

public interface StaticInterface<T extends UsefulObject>

所以我的问题本质上是,有什么方法可以告诉我的 StaticInterface 我的 WantedObject 实际上扩展了我的 UsefulObject,即使它不是直接的?我真的不希望仅仅因为 OlderObject 包含很多有用的代码而将我的 WantedObject 重写为 UsefulObject 的纯扩展,并且我正在写入我正在使用的序列想要了解当前状态的数据库旧对象。我在写这篇文章时意识到我可以让 WantedInterface 直接扩展 OlderObject 的接口,但我想知道是否有办法避免这种情况。

编辑:好吧,在一个非常奇怪的转折中,我能够通过将 WantedObject 的扩展更改为 UsefulObject,然后将其改回原样来解决问题。也许问题只是一些临时的 IDE 问题?我正在使用eclipse,它是否偶然遇到了这个问题?

4

1 回答 1

4

A extends B传递性的,这是一种奇特的说法,即 ifA extends BB extends C, thenA extends C也是。例如,编译器对以下代码不会有任何问题:

UsefulObject uo = new WantedObject();
于 2012-07-12T14:08:25.413 回答