public class FieldHandler extends Object
Injector
by sequentially iterating over a list of registered FieldResolver
.
The method resolve(Object, Class, Field)
will return the first non-null value provided by
FieldResolver.resolve(Object, Class, Field)
, or null if no resolver returned a valid value.
During World
construction, after systems and managers have been created, initialize(World, Map)
will be called for each registered FieldResolver
If FieldResolver
implements UseInjectionCache
, UseInjectionCache.setCache(InjectionCache)
will be called prior to FieldResolver.initialize(World)
being called, availing the InjectionCache
used by this handler.
Modifier and Type | Field and Description |
---|---|
protected Bag<FieldResolver> |
fieldResolvers |
Constructor and Description |
---|
FieldHandler(InjectionCache cache)
Constructs a ned FieldHandler with an
ArtemisFieldResolver and WiredFieldResolver
already registered, which can resolve ComponentMapper , BaseSystem
and Manager types registered in the World
Wire . |
FieldHandler(InjectionCache cache,
Bag<FieldResolver> fieldResolvers)
Constructs a new FieldHandler with the provided fieldResolvers.
|
Modifier and Type | Method and Description |
---|---|
void |
addFieldResolver(FieldResolver fieldResolver)
Adds a
FieldResolver to this handler. |
Bag<FieldResolver> |
getFieldResolvers() |
void |
initialize(World world,
Map<String,Object> injectables)
During
World construction, after systems and managers have been created, initialize(World, Map)
will be called for each registered FieldResolver |
Object |
resolve(Object target,
Class<?> fieldType,
Field field)
Returns the first non-null value provided by
FieldResolver.resolve(Object, Class, Field) , or null if no resolver returned a valid value. |
protected Bag<FieldResolver> fieldResolvers
public FieldHandler(InjectionCache cache, Bag<FieldResolver> fieldResolvers)
FieldResolver
order is required.
For Artemis to function correctly, ArtemisFieldResolver
should be added somewhere in the bag, or
added via addFieldResolver(FieldResolver)
prior to world construction.
cache
- used for better reflection-speed.fieldResolvers
- bag of fieldresolver this FieldHandler should use.ArtemisFieldResolver
public FieldHandler(InjectionCache cache)
ArtemisFieldResolver
and WiredFieldResolver
already registered, which can resolve ComponentMapper
, BaseSystem
and Manager
types registered in the World
Wire
.cache
- used for better reflection-speed.ArtemisFieldResolver
public void initialize(World world, Map<String,Object> injectables)
World
construction, after systems and managers have been created, initialize(World, Map)
will be called for each registered FieldResolver
If FieldResolver
implements UseInjectionCache
, UseInjectionCache.setCache(InjectionCache)
will be called prior to FieldResolver.initialize(World)
being called, availing the InjectionCache
used by this handler.world
- the world this FieldHandler is being used forWorldConfigurationException
- when injector has no way to deal with injectables.public Object resolve(Object target, Class<?> fieldType, Field field)
FieldResolver.resolve(Object, Class, Field)
, or null if no resolver returned a valid value.fieldType
- class of the fieldfield
- field for which a value should be resolvedFieldResolver
could provide an instance
for the field
, null if the field
could not be resolvedpublic final void addFieldResolver(FieldResolver fieldResolver)
FieldResolver
to this handler. Resolvers added first, will be used first for resolving fields,
so the order of add operations is significant.fieldResolver
- is added to this FieldHandler fieldresolver-listpublic Bag<FieldResolver> getFieldResolvers()
Copyright © 2019. All rights reserved.