繁体   English   中英

how can you pass an object to a function as a parameter, then have the function to assign a new object of a subtype to its parameter?

[英]how can you pass an object to a function as a parameter, then have the function to assign a new object of a subtype to its parameter?

我正在尝试使用递归下降解析方法和访问者模式构建一个编译器,用于使用 Java 进行语义检查。 让我困惑的是使用访问者模式,我们必须创建不同的子类型。 但是,Java 没有通过引用传递。 这导致我无法为每个语义记录找到正确的子类型。 这是我要实现的

Node node = new ExprNode();
changeNodeType(node);

public void changeNodeType(Node node) {
     node = new AddOpNode();
}

那么最终我的 Node 类型将以 AddOpNode() 结束。 有什么方法可以最终在 Java 中实现吗?

您可以只返回新节点类型并将其分配到 function 之外。

Node node = new ExprNode();
node = changeNodeType();

public Node changeNodeType() {
     return new AddOpNode();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM