Класс вложения против объявления класса

Есть ли обстоятельства, при которыхClass.getDeclaringClass может дать другой результат отClass.getEnclosingClass?

Я подумал, что это может быть связано с подклассом внешнего класса, создающим экземпляр внутреннего класса, который не был объявлен как статический, но я не смог получить разницу таким образом:

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() );
  }
}

Выход:

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

Ответы на вопрос(1)

Ваш ответ на вопрос