Class InjectorShell


  • final class InjectorShell
    extends java.lang.Object
    InjectorShell is used by InternalInjectorCreator to recursively create a tree of uninitialized Injectors. Each InjectorShell corresponds to either the top-level root injector, or a private child injector.

    The root InjectorShell extracts elements from its list of modules and processes these elements to aggregate data that is used to populate its injector's fields. Child injectors are constructed similarly, but using PrivateElements instead of modules.

    It is necessary to create the root and child injectors in a single batch because there can be bidirectional parent <-> child injector dependencies that require the entire tree of injectors to be initialized together in the InternalInjectorCreator.

    • Field Detail

      • elements

        private final java.util.List<Element> elements
    • Constructor Detail

      • InjectorShell

        private InjectorShell​(java.util.List<Element> elements,
                              InjectorImpl injector)
    • Method Detail

      • getElements

        java.util.List<Element> getElements()
      • bindInjector

        private static void bindInjector​(InjectorImpl injector)
        The Injector is a special case because we allow both parent and child injectors to both have a binding for that key.
      • bindLogger

        private static void bindLogger​(InjectorImpl injector)
        The Logger is a special case because it knows the injection point of the injected member. It's the only binding that does this.