class OperateDataField extends OperateDataAttr {
    private Object fieldObject;
    private String originalFieldName;

    public OperateDataField(Object fieldObject, String fieldName) {
        super(null, null);
        if (fieldObject == null) {
            this.name = "没有初始化的Field";
        } else {
            this.name = fieldObject.getClass().getName() + "." + fieldName;
        }
        this.fieldObject = fieldObject;
        this.originalFieldName = fieldName;
    }

    public void initialDataField(Object fieldObject, String fieldName) {
        super.initialDataAttr(null, null);
        if (fieldObject == null) {
            this.name = Void.class.getName() + "." + fieldName;
        } else {
            this.name = fieldObject.getClass().getName() + "." + fieldName;
        }
        this.fieldObject = fieldObject;
        this.originalFieldName = fieldName;
    }

    public void clearDataField() {
        super.clearDataAttr();
        this.name = null;
        this.fieldObject = null;
        this.originalFieldName = null;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}

    public Object transferFieldName(InstructionSetContext context, String oldName) {
        if (!context.isSupportDynamicFieldName()) {
            return oldName;
        } else {
            try {
                OperateDataAttr o = (OperateDataAttr)context.findAliasOrDefSymbol(oldName);
                if (o != null) {
                    return o.getObject(context);
                } else {
                    return oldName;
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }

    @Override
    public Object getObjectInner(InstructionSetContext context) throws Exception {
        AppendingClassFieldManager appendingClassFieldManager = context.getExpressRunner()
            .getAppendingClassFieldManager();

        if (appendingClassFieldManager != null) {
            AppendingClassFieldManager.AppendingField appendingField
                = appendingClassFieldManager.getAppendingClassField(this.fieldObject, this.originalFieldName);
            if (appendingField != null) {
                return appendingClassFieldManager.invoke(appendingField, this.fieldObject);
            }
        }
        //如果能找到aFieldName的定义,则再次运算
        if (this.fieldObject instanceof OperateDataVirClass) {
            return ((OperateDataVirClass)this.fieldObject).getValue(transferFieldName(context, this.originalFieldName));
        } else {
            return ExpressUtil.getProperty(this.fieldObject, transferFieldName(context, this.originalFieldName));
        }
    }

    @Override
    public Class<?> getType(InstructionSetContext context) throws Exception {
        AppendingClassFieldManager appendingClassFieldManager = context.getExpressRunner()
            .getAppendingClassFieldManager();

        if (appendingClassFieldManager != null) {
            AppendingClassFieldManager.AppendingField appendingField
                = appendingClassFieldManager.getAppendingClassField(this.fieldObject, this.originalFieldName);
            if (appendingField != null) {
                return appendingField.getReturnType();
            }
        }
        if (this.fieldObject instanceof OperateDataVirClass) {
            return ((OperateDataVirClass)this.fieldObject).getValueType(
                transferFieldName(context, this.originalFieldName));
        } else {
            if (this.fieldObject == null && QLExpressRunStrategy.isAvoidNullPointer()) {
                return Void.class;
            }
            return ExpressUtil.getPropertyClass(this.fieldObject, transferFieldName(context, this.originalFieldName));
        }
    }

    @Override
    public void setObject(InstructionSetContext context, Object value) throws Exception {
        if (this.fieldObject instanceof OperateDataVirClass) {
            ((OperateDataVirClass)this.fieldObject).setValue(
                transferFieldName(context, this.originalFieldName).toString(), value);
        } else {
            ExpressUtil.setProperty(fieldObject, transferFieldName(context, this.originalFieldName), value);
        }
    }
}

        try {
            return name;
        } catch (Exception ex) {
            return ex.getMessage();
        }
    
<methods>public void <init>(java.lang.String, Class<?>) ,public void clearDataAttr() ,public Class<?> getDefineType() ,public java.lang.String getName() ,public java.lang.Object getObjectInner(com.ql.util.express.InstructionSetContext) throws java.lang.Exception,public Class<?> getType(com.ql.util.express.InstructionSetContext) throws java.lang.Exception,public void initialDataAttr(java.lang.String, Class<?>) ,public void setDefineType(Class<?>) ,public void setObject(com.ql.util.express.InstructionSetContext, java.lang.Object) throws java.lang.Exception,public void toResource(java.lang.StringBuilder, int) ,public java.lang.String toString() <variables>protected java.lang.String name