Ответ 1
Вот некоторая информация.
Из следующей ссылки http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-final.html: Это полезно для управления памятью: в то время как экземпляры внутреннего класса всегда содержат сильную ссылку на свой включенный экземпляр, lambdas, которые не захватывают членов из вмещающего экземпляра, не содержат ссылки на него. Эта характеристика внутренних экземпляров класса часто может быть источником утечек памяти (так называемая проблема с задержкой слушателя)
Вы также можете увидеть http://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html из текста: Вложенный класс: используйте его, если ваши требования аналогичны требованиям локального класса, вы хотите сделать этот тип более доступным, и вам не нужен доступ к локальным переменным или параметрам метода.
Используйте нестатический вложенный класс (или внутренний класс), если вам нужен доступ к закрывающим экземпляру непубличных полей и методов. Используйте статический вложенный класс, если вы не требуете этого доступа.