Class ArrayFactory
- java.lang.Object
-
- net.bytebuddy.implementation.bytecode.collection.ArrayFactory
-
- All Implemented Interfaces:
CollectionFactory
@Enhance public class ArrayFactory extends java.lang.Object implements CollectionFactory
ACollectionFactorythat is capable of creating an array of a given type with any number of given values.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static interfaceArrayFactory.ArrayCreatorAn array creator is responsible for providing correct byte code instructions for creating an array and for storing values into it.protected classArrayFactory.ArrayStackManipulationA stack manipulation for creating an array as defined by the enclosing array factory.
-
Field Summary
Fields Modifier and Type Field Description private ArrayFactory.ArrayCreatorarrayCreatorThe array creator delegate that supplies suitable opcodes for the creation of an array and the storage of values inside it.private TypeDescription.GenericcomponentTypeThe component type of the array this array factory is creating.private StackManipulation.SizesizeDecreaseThe decrease of stack size after each value storage operation.
-
Constructor Summary
Constructors Modifier Constructor Description protectedArrayFactory(TypeDescription.Generic componentType, ArrayFactory.ArrayCreator arrayCreator)Creates a new array factory with a givenArrayFactory.ArrayCreatorwithout inferring the type from the component type.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ArrayFactoryforType(TypeDescription.Generic componentType)Creates a new array factory for a given component type.TypeDescription.GenericgetComponentType()The component type of this factory.private static ArrayFactory.ArrayCreatormakeArrayCreatorFor(TypeDefinition componentType)Creates a suitable array creator for the given component type.StackManipulationwithValues(java.util.List<? extends StackManipulation> stackManipulations)Applies this collection factory in order to build a new collection where each element is represented by the given stack manipulations.
-
-
-
Field Detail
-
componentType
private final TypeDescription.Generic componentType
The component type of the array this array factory is creating.
-
arrayCreator
private final ArrayFactory.ArrayCreator arrayCreator
The array creator delegate that supplies suitable opcodes for the creation of an array and the storage of values inside it.
-
sizeDecrease
@ValueHandling(IGNORE) private final StackManipulation.Size sizeDecrease
The decrease of stack size after each value storage operation.
-
-
Constructor Detail
-
ArrayFactory
protected ArrayFactory(TypeDescription.Generic componentType, ArrayFactory.ArrayCreator arrayCreator)
Creates a new array factory with a givenArrayFactory.ArrayCreatorwithout inferring the type from the component type. Normally,forType(net.bytebuddy.description.type.TypeDescription.Generic)should be used.- Parameters:
componentType- The component type of the array factory.arrayCreator- The array creator responsible for providing the correct byte code instructions.
-
-
Method Detail
-
forType
public static ArrayFactory forType(TypeDescription.Generic componentType)
Creates a new array factory for a given component type.- Parameters:
componentType- The component type of the array that is to be build.- Returns:
- A new array factory for the given type.
-
makeArrayCreatorFor
private static ArrayFactory.ArrayCreator makeArrayCreatorFor(TypeDefinition componentType)
Creates a suitable array creator for the given component type.- Parameters:
componentType- The component type of the array to be created.- Returns:
- A suitable array creator.
-
withValues
public StackManipulation withValues(java.util.List<? extends StackManipulation> stackManipulations)
Applies this collection factory in order to build a new collection where each element is represented by the given stack manipulations.- Specified by:
withValuesin interfaceCollectionFactory- Parameters:
stackManipulations- A list of stack manipulations loading the values to be stored in the collection that is created by this factory in their given order.- Returns:
- A stack manipulation that creates the collection represented by this collection factory.
-
getComponentType
public TypeDescription.Generic getComponentType()
The component type of this factory.- Specified by:
getComponentTypein interfaceCollectionFactory- Returns:
- A type description of this factory's component type.
-
-