Я просматривал исходный код Google guice и нашел незнакомый фрагмент кода. Было бы здорово узнать, если бы кто-то мог это прояснить.
У меня есть очень общее представление о внутренних классах, поскольку они сохраняют детали реализации близко к общедоступному интерфейсу. В противном случае внутренний класс может загрязнить пространство имен.
Теперь я вижу строки ниже в
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 — это интерфейс, определенный как (в)
публичный интерфейс
Часть 1:
Можно ли создать интерфейс?? или это краткий синтаксис для анонимной реализации интерфейса??
Часть 2:
Если кто-нибудь может объяснить, что автор подразумевает под несколькими вложенными классами выше (Scope и Provider), и почему имеет смысл реализовать этот способ, это поможет мне понять. благодаря.