Classing class vs Declaring class

Existem circunstâncias em queClass.getDeclaringClass poderia dar um resultado diferente deClass.getEnclosingClass?

Eu pensei que isso poderia ter a ver com uma subclasse da classe externa instanciando uma classe interna que não foi declarada como estática, mas não consegui fazer a diferença dessa maneira:

public class Main {
  private static class StaticInnerClass {

  }

  private class MemberInnerClass {

  }

  private static class ChildClass extends Main {

  }

  public MemberInnerClass getMemberInnerClassInstance() {
    return new MemberInnerClass();
  }

  public static void main(String[] args) {
    System.out.println( StaticInnerClass.class.getDeclaringClass() );
    System.out.println( StaticInnerClass.class.getEnclosingClass() );
    System.out.println( MemberInnerClass.class.getDeclaringClass() );
    System.out.println( MemberInnerClass.class.getEnclosingClass() );
    System.out.println( new ChildClass().getMemberInnerClassInstance().getClass().getEnclosingClass() );
    System.out.println( new ChildClass().getMemberInnerClassInstance().getClass().getDeclaringClass() );
  }
}

Resultado

class Main
class Main
class Main
class Main
class Main
class Main

questionAnswers(2)

yourAnswerToTheQuestion