【问题标题】:Interface type parameter extends the interface?接口类型参数扩展接口?
【发布时间】:2021-08-07 04:55:47
【问题描述】:

我在阅读代码库时遇到了这种结构,但我无法弄清楚它的作用/代表什么:

public interface MyInterface<T extends MyInterface<T>> {}

我不明白类型绑定在这里做什么 - 它似乎几乎是递归的?在这种情况下,T 的真正限制是什么?

【问题讨论】:

标签: java oop interface type-bounds


【解决方案1】:

这意味着任何实现该接口的类都必须将T指定为自己:

class MyClass implements MyInterface<MyClass> {}
//       │                              ↑
//       └──────────────────────────────┘

这里的TMyClass,它扩展了MyInterface&lt;MyClass&gt;,所以满足T extends MyInterface&lt;T&gt; 的界限。

【讨论】:

  • 所以基本上任何接受/给予 T 的方法实际上都是在接受/给予“这个类”?例如:T someMethod(...) 实际上说“这个方法接受一些参数并给出一些实现类的实例?我想这比简单地说interface MyInterface { MyInterface foo(...) } 更强,因为这可能是 MyInterface 的任何实现
  • @NimrodSadeh 不,您不能保证 Tthis 对象的类型。例如。 class Foo implements MyInterface&lt;Foo&gt; {}class Bar implements MyInterface&lt;Foo&gt; {} 是有效的,即使 BarT 不是 Bar 类型。
猜你喜欢
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2015-04-01
  • 2017-01-21
相关资源
最近更新 更多