さまざまなクラスのインターフェイスがあり、そのすべてが Iterator を実装する必要があるため、次のようなものがあります
public interface A extends Iterable<A> { ...otherMethods()... }
ただし、具体的なクラスの場合、これは使用する必要があることを意味します
public class B implements A { public Iterator<A> iterator() {...} }
クラスの具体的な使用が明示的な型を持つことができるように使用することを好む(または少なくとも、私が好むと思う)ときpublic Iterator<B> iterator() {...}
(インターフェイスにないメソッドを使用できるようにしたい場合など)たぶん、それは出てこないのでしょうか? それとも出てくるとしたら、それは設計が悪いのでしょうか?
裏側は、 Iterator インターフェイスを使用することです
public interface A extends Iterator<A> { ...otherMethods()... }
具体的なクラスは問題なくコンパイルされます
public class B implements A { public B next() {...} }
何を与える?