Вы используете его, когда ваш класс естественным образом вложен, но не нуждается в автоматической магии $ этой родительской ссылки, которую имеет внутренний класс в Java. Каждый нестатический внутренний класс имеет встроенную ссылку на содержащий его экземпляр. Когда вам на самом деле не нужна эта ссылка, лучше ее не создавать. Это может привести к тому, что объекты останутся в памяти гораздо дольше, чем нужно, и это также может быть проблемой, когда вы начинаете сериализацию объектов / пытаетесь отправить их по сети и т. Д. Вы можете получить гораздо больший граф объектов, чем вы. ожидаемый или необходимый для сериализации!
Реализации Map.Entry являются хорошим примером. Очевидно, что это естественно для того, чтобы быть вложенным в реализацию карты, но нет необходимости действительно удерживать родительскую ссылку обратно на карту.
Для # 2, как это отличается? Статический для поля или метода означает, что он является атрибутом определения класса, а не экземпляра. Вы можете получить доступ и использовать его, не имея экземпляра. Статика для вложенного класса также означает, что он является атрибутом определения класса, к которому вы можете обращаться и использовать его без экземпляра.