限制可能实现接口的类

egg*_*yal 5 java generics

一般来说,是否可以限制可能实现接口的类?

更具体地说,通用接口可以Foo<T>将其实现限制为以下的后代T:

interface Foo<T> {}
class Baz extends Bar implements Foo<Bar> {} // desirable
class Baz extends Bar implements Foo<Qux> {} // undesirable
Run Code Online (Sandbox Code Playgroud)

上下文是Foo<Bar>对象应该以Bar类型安全的方式转换为对象.

在用尽所有其他信息来源后,我已经有了强烈的预感,这是不可能的 - 但如果有人能证明不是这样的话,我会很高兴!

Joa*_*uer 5

如果强制转换的能力不是绝对必要的,那么在您的界面中添加这样的附加方法可能就足够了:

public T getT()
Run Code Online (Sandbox Code Playgroud)

如果大多数实现实际上是扩展T,则它们可以简单地return this作为该方法的实现。