org.springframework.beans.factory.config

Class ConstructorArgumentValues

  • java.lang.Object
    • org.springframework.beans.factory.config.ConstructorArgumentValues


  • public class ConstructorArgumentValues
    extends java.lang.Object
    Holder for constructor argument values, typically as part of a bean definition.

    Supports values for a specific index in the constructor argument list as well as for generic argument matches by type.

    Since:
    09.11.2003
    Author:
    Juergen Hoeller
    See Also:
    BeanDefinition.getConstructorArgumentValues()
    • Constructor Detail

      • ConstructorArgumentValues

        public ConstructorArgumentValues()
        Create a new empty ConstructorArgumentValues object.
      • ConstructorArgumentValues

        public ConstructorArgumentValues(ConstructorArgumentValues original)
        Deep copy constructor.
        Parameters:
        original - the ConstructorArgumentValues to copy
    • Method Detail

      • addArgumentValues

        public void addArgumentValues(@Nullable
                                      ConstructorArgumentValues other)
        Copy all given argument values into this object, using separate holder instances to keep the values independent from the original object.

        Note: Identical ValueHolder instances will only be registered once, to allow for merging and re-merging of argument value definitions. Distinct ValueHolder instances carrying the same content are of course allowed.

      • addIndexedArgumentValue

        public void addIndexedArgumentValue(int index,
                                            @Nullable
                                            java.lang.Object value)
        Add an argument value for the given index in the constructor argument list.
        Parameters:
        index - the index in the constructor argument list
        value - the argument value
      • addIndexedArgumentValue

        public void addIndexedArgumentValue(int index,
                                            @Nullable
                                            java.lang.Object value,
                                            java.lang.String type)
        Add an argument value for the given index in the constructor argument list.
        Parameters:
        index - the index in the constructor argument list
        value - the argument value
        type - the type of the constructor argument
      • addIndexedArgumentValue

        public void addIndexedArgumentValue(int index,
                                            ConstructorArgumentValues.ValueHolder newValue)
        Add an argument value for the given index in the constructor argument list.
        Parameters:
        index - the index in the constructor argument list
        newValue - the argument value in the form of a ValueHolder
      • hasIndexedArgumentValue

        public boolean hasIndexedArgumentValue(int index)
        Check whether an argument value has been registered for the given index.
        Parameters:
        index - the index in the constructor argument list
      • getIndexedArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getIndexedArgumentValue(int index,
                                                                                       @Nullable
                                                                                       java.lang.Class<?> requiredType)
        Get argument value for the given index in the constructor argument list.
        Parameters:
        index - the index in the constructor argument list
        requiredType - the type to match (can be null to match untyped values only)
        Returns:
        the ValueHolder for the argument, or null if none set
      • getIndexedArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getIndexedArgumentValue(int index,
                                                                                       @Nullable
                                                                                       java.lang.Class<?> requiredType,
                                                                                       @Nullable
                                                                                       java.lang.String requiredName)
        Get argument value for the given index in the constructor argument list.
        Parameters:
        index - the index in the constructor argument list
        requiredType - the type to match (can be null to match untyped values only)
        requiredName - the type to match (can be null to match unnamed values only, or empty String to match any name)
        Returns:
        the ValueHolder for the argument, or null if none set
      • addGenericArgumentValue

        public void addGenericArgumentValue(java.lang.Object value)
        Add a generic argument value to be matched by type.

        Note: A single generic argument value will just be used once, rather than matched multiple times.

        Parameters:
        value - the argument value
      • addGenericArgumentValue

        public void addGenericArgumentValue(java.lang.Object value,
                                            java.lang.String type)
        Add a generic argument value to be matched by type.

        Note: A single generic argument value will just be used once, rather than matched multiple times.

        Parameters:
        value - the argument value
        type - the type of the constructor argument
      • addGenericArgumentValue

        public void addGenericArgumentValue(ConstructorArgumentValues.ValueHolder newValue)
        Add a generic argument value to be matched by type or name (if available).

        Note: A single generic argument value will just be used once, rather than matched multiple times.

        Parameters:
        newValue - the argument value in the form of a ValueHolder

        Note: Identical ValueHolder instances will only be registered once, to allow for merging and re-merging of argument value definitions. Distinct ValueHolder instances carrying the same content are of course allowed.

      • getGenericArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getGenericArgumentValue(java.lang.Class<?> requiredType)
        Look for a generic argument value that matches the given type.
        Parameters:
        requiredType - the type to match
        Returns:
        the ValueHolder for the argument, or null if none set
      • getGenericArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getGenericArgumentValue(java.lang.Class<?> requiredType,
                                                                                       java.lang.String requiredName)
        Look for a generic argument value that matches the given type.
        Parameters:
        requiredType - the type to match
        requiredName - the name to match
        Returns:
        the ValueHolder for the argument, or null if none set
      • getGenericArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getGenericArgumentValue(@Nullable
                                                                                       java.lang.Class<?> requiredType,
                                                                                       @Nullable
                                                                                       java.lang.String requiredName,
                                                                                       @Nullable
                                                                                       java.util.Set<ConstructorArgumentValues.ValueHolder> usedValueHolders)
        Look for the next generic argument value that matches the given type, ignoring argument values that have already been used in the current resolution process.
        Parameters:
        requiredType - the type to match (can be null to find an arbitrary next generic argument value)
        requiredName - the name to match (can be null to not match argument values by name, or empty String to match any name)
        usedValueHolders - a Set of ValueHolder objects that have already been used in the current resolution process and should therefore not be returned again
        Returns:
        the ValueHolder for the argument, or null if none found
      • getArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getArgumentValue(int index,
                                                                                java.lang.Class<?> requiredType)
        Look for an argument value that either corresponds to the given index in the constructor argument list or generically matches by type.
        Parameters:
        index - the index in the constructor argument list
        requiredType - the parameter type to match
        Returns:
        the ValueHolder for the argument, or null if none set
      • getArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getArgumentValue(int index,
                                                                                java.lang.Class<?> requiredType,
                                                                                java.lang.String requiredName)
        Look for an argument value that either corresponds to the given index in the constructor argument list or generically matches by type.
        Parameters:
        index - the index in the constructor argument list
        requiredType - the parameter type to match
        requiredName - the parameter name to match
        Returns:
        the ValueHolder for the argument, or null if none set
      • getArgumentValue

        @Nullable
        public ConstructorArgumentValues.ValueHolder getArgumentValue(int index,
                                                                                @Nullable
                                                                                java.lang.Class<?> requiredType,
                                                                                @Nullable
                                                                                java.lang.String requiredName,
                                                                                @Nullable
                                                                                java.util.Set<ConstructorArgumentValues.ValueHolder> usedValueHolders)
        Look for an argument value that either corresponds to the given index in the constructor argument list or generically matches by type.
        Parameters:
        index - the index in the constructor argument list
        requiredType - the parameter type to match (can be null to find an untyped argument value)
        requiredName - the parameter name to match (can be null to find an unnamed argument value, or empty String to match any name)
        usedValueHolders - a Set of ValueHolder objects that have already been used in the current resolution process and should therefore not be returned again (allowing to return the next generic argument match in case of multiple generic argument values of the same type)
        Returns:
        the ValueHolder for the argument, or null if none set
      • getArgumentCount

        public int getArgumentCount()
        Return the number of argument values held in this instance, counting both indexed and generic argument values.
      • isEmpty

        public boolean isEmpty()
        Return if this holder does not contain any argument values, neither indexed ones nor generic ones.
      • clear

        public void clear()
        Clear this holder, removing all argument values.
      • equals

        public boolean equals(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object