class OperatorArray extends OperatorBase {
    public OperatorArray(String name) {
        this.name = name;
    }

    public OperatorArray(String aliasName, String name, String errorInfo) {
        this.name = name;
        this.aliasName = aliasName;
        this.errorInfo = errorInfo;
    }

    @Override
    public OperateData executeInner(InstructionSetContext parent, ArraySwap list) throws Exception {<FILL_FUNCTION_BODY>}
}

        OperateData firstOperateData = list.get(0);
        if (firstOperateData == null || firstOperateData.getObject(parent) == null) {
            throw new QLException("对象为null，不能执行数组相关操作");
        }

        Object tmpObject = firstOperateData.getObject(parent);

        if (!tmpObject.getClass().isArray()) {
            Object property = list.get(1).getObject(parent);
            //支持data.get(index) ->data[index]
            if (tmpObject instanceof List && property instanceof Number) {
                int index = ((Number)property).intValue();
                return OperateDataCacheManager.fetchOperateDataArrayItem(firstOperateData, index);
            }
            //支持data.code -> data['code']
            if (property instanceof String || property instanceof Character) {
                return OperateDataCacheManager.fetchOperateDataField(tmpObject, String.valueOf(property));
            }
        }
        //支持原生Array：data[index]
        int index = ((Number)list.get(1).getObject(parent)).intValue();
        return OperateDataCacheManager.fetchOperateDataArrayItem(firstOperateData, index);
    
<methods>public non-sealed void <init>() ,public com.ql.util.express.OperateData execute(com.ql.util.express.InstructionSetContext, com.ql.util.express.ArraySwap, List<java.lang.String>) throws java.lang.Exception,public abstract com.ql.util.express.OperateData executeInner(com.ql.util.express.InstructionSetContext, com.ql.util.express.ArraySwap) throws java.lang.Exception,public java.lang.String getAliasName() ,public java.lang.String getErrorInfo() ,public java.lang.String getName() ,public java.lang.String[] getOperateDataAnnotation() ,public java.lang.String[] getOperateDataDesc() ,public boolean isPrecise() ,public void setAliasName(java.lang.String) ,public void setErrorInfo(java.lang.String) ,public void setName(java.lang.String) ,public void setPrecise(boolean) ,public java.lang.Object[] toObjectList(com.ql.util.express.InstructionSetContext, com.ql.util.express.ArraySwap) throws java.lang.Exception,public java.lang.String toString() <variables>protected java.lang.String aliasName,protected java.lang.String errorInfo,protected boolean isPrecise,protected java.lang.String name,protected java.lang.String[] operateDataAnnotation,protected java.lang.String[] operateDataDesc