类 ConstructorReference
java.lang.Object
cn.taketoday.expression.spel.ast.SpelNodeImpl
cn.taketoday.expression.spel.ast.ConstructorReference
Represents the invocation of a constructor. Either a constructor on a regular type or
construction of an array. When an array is constructed, an initializer can be specified.
Examples
new example.Foo()new String('hello world')new int[] {1,2,3,4}new String[] {'abc','xyz'}new int[5]new int[3][4]
- 从以下版本开始:
- 4.0
- 作者:
- Andy Clement, Harry Yang, Juergen Hoeller, Sam Brannen
-
字段概要
字段修饰符和类型字段说明private ConstructorExecutorThe cached executor that may be reused on subsequent evaluations.private final SpelNodeImpl[]private final booleanprivate static final intMaximum number of elements permitted in an array declaration, applying to one-dimensional as well as multi-dimensional arrays.从类继承的字段 cn.taketoday.expression.spel.ast.SpelNodeImpl
children, exitTypeDescriptor从接口继承的字段 cn.taketoday.bytecode.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JAVA_VERSION, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PRIVATE_FINAL_STATIC, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, SWITCH_STYLE_HASH, SWITCH_STYLE_HASHONLY, SWITCH_STYLE_TRIE, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V9 -
构造器概要
构造器构造器说明ConstructorReference(int startPos, int endPos, SpelNodeImpl... arguments) Create a constructor reference.ConstructorReference(int startPos, int endPos, SpelNodeImpl[] dimensions, SpelNodeImpl... arguments) Create a constructor reference. -
方法概要
修饰符和类型方法说明private voidcheckNumElements(long numElements) private TypedValuecreateArray(ExpressionState state) Create an array and return it.private boolean[]createBooleanArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) private byte[]createByteArray(ExpressionState state, TypeConverter converter, SpelNodeImpl[] children) private char[]createCharArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) private double[]createDoubleArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) private float[]createFloatArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) private int[]createIntArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) private long[]createLongArray(ExpressionState state, TypeConverter converter, SpelNodeImpl[] children) private TypedValuecreateNewInstance(ExpressionState state) Create a new ordinary object and return it.private ObjectcreateReferenceTypeArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children, Class<?> componentType) private short[]createShortArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) private ConstructorExecutorfindExecutorForConstructor(String typeName, List<TypeDescriptor> argumentTypes, ExpressionState state) Go through the list of registered constructor resolvers and see if any can find a constructor that takes the specified set of arguments.voidgenerateCode(MethodVisitor mv, CodeFlow cf) Generate the bytecode for this node into the supplied visitor.getValueInternal(ExpressionState state) Implements getValue() - delegating to the code for building an array or a simple type.private booleanbooleanCheck whether a node can be compiled to bytecode.Return the string form the this AST node.从类继承的方法 cn.taketoday.expression.spel.ast.SpelNodeImpl
generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isWritable, nextChildIs, setValue, setValueInternal
-
字段详细资料
-
MAX_ARRAY_ELEMENTS
private static final int MAX_ARRAY_ELEMENTSMaximum number of elements permitted in an array declaration, applying to one-dimensional as well as multi-dimensional arrays.- 另请参阅:
-
isArrayConstructor
private final boolean isArrayConstructor -
dimensions
-
cachedExecutor
The cached executor that may be reused on subsequent evaluations.
-
-
构造器详细资料
-
ConstructorReference
Create a constructor reference. The first argument is the type, the rest are the parameters to the constructor call -
ConstructorReference
public ConstructorReference(int startPos, int endPos, SpelNodeImpl[] dimensions, SpelNodeImpl... arguments) Create a constructor reference. The first argument is the type, the rest are the parameters to the constructor call
-
-
方法详细资料
-
getValueInternal
Implements getValue() - delegating to the code for building an array or a simple type.- 指定者:
getValueInternal在类中SpelNodeImpl- 抛出:
EvaluationException
-
createNewInstance
Create a new ordinary object and return it.- 参数:
state- the expression state within which this expression is being evaluated- 返回:
- the new object
- 抛出:
EvaluationException- if there is a problem creating the object
-
findExecutorForConstructor
private ConstructorExecutor findExecutorForConstructor(String typeName, List<TypeDescriptor> argumentTypes, ExpressionState state) throws SpelEvaluationException Go through the list of registered constructor resolvers and see if any can find a constructor that takes the specified set of arguments.- 参数:
typeName- the type trying to be constructedargumentTypes- the types of the arguments supplied that the constructor must takestate- the current state of the expression- 返回:
- a reusable ConstructorExecutor that can be invoked to run the constructor or null
- 抛出:
SpelEvaluationException- if there is a problem locating the constructor
-
toStringAST
从接口复制的说明:SpelNodeReturn the string form the this AST node.- 返回:
- the string form
-
createArray
Create an array and return it.- 参数:
state- the expression state within which this expression is being evaluated- 返回:
- the new array
- 抛出:
EvaluationException- if there is a problem creating the array
-
checkNumElements
private void checkNumElements(long numElements) -
createReferenceTypeArray
private Object createReferenceTypeArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children, Class<?> componentType) -
createByteArray
private byte[] createByteArray(ExpressionState state, TypeConverter converter, SpelNodeImpl[] children) -
createFloatArray
private float[] createFloatArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) -
createDoubleArray
private double[] createDoubleArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) -
createShortArray
private short[] createShortArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) -
createLongArray
private long[] createLongArray(ExpressionState state, TypeConverter converter, SpelNodeImpl[] children) -
createCharArray
private char[] createCharArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) -
createBooleanArray
private boolean[] createBooleanArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) -
createIntArray
private int[] createIntArray(ExpressionState state, TypeConverter typeConverter, SpelNodeImpl[] children) -
hasInitializer
private boolean hasInitializer() -
isCompilable
public boolean isCompilable()从类复制的说明:SpelNodeImplCheck whether a node can be compiled to bytecode. The reasoning in each node may be different but will typically involve checking whether the exit type descriptor of the node is known and any relevant child nodes are compilable.- 覆盖:
isCompilable在类中SpelNodeImpl- 返回:
trueif this node can be compiled to bytecode
-
generateCode
从类复制的说明:SpelNodeImplGenerate the bytecode for this node into the supplied visitor. Context info about the current expression being compiled is available in the codeflow object, e.g. including information about the type of the object currently on the stack.- 覆盖:
generateCode在类中SpelNodeImpl- 参数:
mv- the ASM MethodVisitor into which code should be generatedcf- a context object with info about what is on the stack
-