title: Cyclic inheritance and interfaces - class A can't implement class B interface while class B implements A interface
body: <p>I have:</p>
  
  <pre><code>public class A implements BListener {
      public interface AListener {}
  }
  
  public class B implements AListener {
      public interface BListener {}
  }
  </code></pre>
  
  <p>So, if I understand correctly the cyclic inheritance happens because:</p>
  
  <p>The compiler goes to <strong>A</strong> and says <em>"hey, A implements BListener, let's go find BListener!"</em></p>
  
  <p>Then when it tries to find BListener, it eventually gets to <strong>B</strong>, which it says:</p>
  
  <p><em>"Hey, BListener, needed for A is inside B! BUT WAIT! B needs AListener! Let's go find AListener!"</em></p>
  
  <p>And then it gets to A, repeat. Did I get this right? </p>
  
  <p>By the way, this compilation error happened to me on Android development.</p>