Я просматривал источник гугл-гайков и нашел незнакомый фрагмент кода. Было бы здорово узнать, если кто-то сможет это прояснить.
У меня есть базовые представления о внутренних классах, поскольку они поддерживают детали реализации близкими к общедоступному интерфейсу. В противном случае внутренний класс может загрязнить пространство имен.
Теперь я вижу следующие строки на
public static final Scope SINGLETON = new Scope() {
public <T> Provider<T> scope(final Key<T> key, final Provider<T> creator) {
return new Provider<T>() {
.........
}
Он присваивает экземпляр внутреннего класса статической переменной, но Scope - это интерфейс, определенный как ( at )
открытый интерфейс Scope
Часть 1:
Можно ли создать экземпляр интерфейса ?? или это краткий синтаксис для анонимной реализации интерфейса ??
Часть 2:
Если кто-то может объяснить, что автор подразумевает под несколькими вложенными классами выше (Scope и Provider), и почему имеет смысл реализовать этот способ, это поможет мне понять. спасибо.