Package jmri

Interface InstanceManagerAutoDefault

All Known Implementing Classes:
AppsPreferencesActionFactory, AutomationManager, BlockBossLogicProvider, BlockManager, CarColors, CarLengths, CarLoads, CarManager, CarManagerXml, CarOwners, CarRoads, CarTypes, CatalogTreeModel, ClassMigrationManager, CTCExceptionBuffer, CtcManager, DirectorySearcher, DispatcherFrame, EditorManager, EngineLengths, EngineManager, EngineManagerXml, EngineTypes, EntryExitPairs, FileHistory, GuiLafPreferencesManager, GuiLafPreferencesManager, InternalSystemConnectionMemo, JmriPreferencesActionFactory, JmriScriptEngineManager, JsonMessageClientManager, JsonSchemaServiceCache, JsonServer, JsonServer, JsonServerPreferences, JsonServerPreferences, JsonThrottleManager, LayoutBlockManager, LocationManager, LocationManagerXml, NamedBeanHandleManager, NceConsistRoster, OBlockManager, OperationsManager, OperationsSetupXml, OptionsFile, PlaceWindow, PortalManager, RollingStockLogger, RosterIconFactory, RouteManager, RouteManagerXml, Router, ScheduleManager, SectionManager, ServletUtil, Setup, SignalSpeedMap, SimpleServerManager, SystemConnectionMemoManager, ThrottleFrameManager, TrainCustomManifest, TrainCustomSwitchList, TrainLogger, TrainManager, TrainManagerXml, TrainScheduleManager, TransitManager, TurnoutOperationManager, WarrantManager, WebServerPreferences, WiThrottleManager, ZeroConfServiceManager

public interface InstanceManagerAutoDefault
Interface indicating that the InstanceManager can create an object of this type when needed by a request.

Implies that the default constructor of the class does everything needed to get a working object.

More specifically, the constructors or code called by the constructors of classes implementing this interface (that have the InstanceManager automatically create their objects) should never ask the InstanceManager for reference to other automatically-created types. Doing so may lead to an infinite loop in initialization.

If the object needs to have obtain references, see InstanceManagerAutoInitialize and the discussion there for a possible solution.

If this interface isn't sufficient because the InstanceManager requests are through an interface, e.g. FooManager is an interface with default implementation DefaultFooManager, see InstanceInitializer and its default implementation in DefaultInstanceInitializer. That mechanism can also do more complicated initialization sequences.