一般来说,是否可以限制可能实现接口的类?
更具体地说,通用接口可以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
类型安全的方式转换为对象.
在用尽所有其他信息来源后,我已经有了强烈的预感,这是不可能的 - 但如果有人能证明不是这样的话,我会很高兴!
如果强制转换的能力不是绝对必要的,那么在您的界面中添加这样的附加方法可能就足够了:
public T getT()
Run Code Online (Sandbox Code Playgroud)
如果大多数实现实际上是扩展T
,则它们可以简单地return this
作为该方法的实现。
归档时间: |
|
查看次数: |
2206 次 |
最近记录: |