static Type getComponentTypeN(Type type) { for (;;) { final Type oldType = type; type = getComponentType(type); if (type == null) { return oldType; } } }
@Override public Void visit(NewArrayExpression newArrayExpression) { Type type = newArrayExpression.type; for (;;) { final Type componentType = Types.getComponentType(type); if (componentType == null) { break; } type = componentType; } types.add(type); return super.visit(newArrayExpression); }
@Override public Void visit(NewArrayExpression newArrayExpression) { Type type = newArrayExpression.type; for (;;) { final Type componentType = Types.getComponentType(type); if (componentType == null) { break; } type = componentType; } types.add(type); return super.visit(newArrayExpression); }
public IndexExpression(Expression array, List<Expression> indexExpressions) { super(ExpressionType.ArrayIndex, Types.getComponentType(array.getType())); assert array != null : "array should not be null"; assert indexExpressions != null : "indexExpressions should not be null"; assert !indexExpressions.isEmpty() : "indexExpressions should not be empty"; this.array = array; this.indexExpressions = indexExpressions; }
/** * Returns the component type of an array. */ public static Type getComponentType(Type type) { if (type instanceof Class) { return ((Class) type).getComponentType(); } if (type instanceof ArrayType) { return ((ArrayType) type).getComponentType(); } if (type instanceof GenericArrayType) { return ((GenericArrayType) type).getGenericComponentType(); } if (type instanceof ParameterizedType) { return getComponentType(((ParameterizedType) type).getRawType()); } if (type instanceof TypeVariable) { TypeVariable typeVariable = (TypeVariable) type; return getComponentType(typeVariable.getBounds()[0]); } return null; // not an array type }