开发者社区 问答 正文

在不使用访问者模式的情况下如何在一个SelectNode类中实现extractFunctions方法

在不使用访问者模式的情况下,如何在一个 SelectNode 类中实现 extractFunctions 方法?

展开
收起
不吃核桃 2024-07-31 13:26:26 22 分享 版权
1 条回答
写回答
取消 提交回答
  • 在不使用访问者模式的情况下,可以在 SelectNode 类中直接增加一个 extractFunctions 成员方法。这个方法会遍历并调用其子结构(如 FieldsNode 和 WhereNode)的 extractFunctions 方法,并将结果合并后返回。例如:

    java
    class SelectNode extends SqlNode {
    // ... 其他成员变量和构造函数 ...

    public List<String> extractFunctions() {  
        List<String> res = new ArrayList<>();  
        // 调用子结构的 extractFunctions  
        res.addAll(fields.extractFunctions());  
        // 注意:这里应该是 where.extractFunctions(),而不是 selectNode.extractFunctions(),因为 selectNode 是当前对象  
        res.addAll(where.extractFunctions());  
        return res;  
    }  
    

    }

    2024-07-31 14:01:40
    赞同 3 展开评论
问答地址: