java - Java驱动程序类主方法创建驱动程序类的新实例
问题描述
我目前正在上一门关于使用 java 的设计模式的课程。我对为解释器模式提供的示例代码感到困惑。在驱动类中,main 方法创建了一个新的驱动类实例(为了使用构造函数)。但是,不会再次调用新实例中的 main 方法,从而创建新驱动程序类的无限循环吗?
import java.util.Scanner;
public class InterpreterDriver {
// class variables
public Conversion originatingContent = null;
public Expression theExpression = null;
public InterpreterDriver(Conversion content) {
originatingContent = content;
}
public void interpret(String tString) {
Scanner in = new Scanner(System.in);
theExpression = new MapIntToCharacters(tString);
theExpression.interpret(originatingContent);
}
public static void main(String[] args) {
System.out.println("\n\nCODE INTERPRETER\n");
System.out.print("Enter your code: ");
Scanner in = new Scanner(System.in);
String userInput = in.nextLine();
System.out.println("Your code: " + userInput);
Conversion conversion = new Conversion(userInput);
InterpreterDriver userCode = new InterpreterDriver(conversion);
userCode.interpret(userInput);
System.out.println("\n\n");
}
}
解决方案
您可能会混淆构造函数的主要方法。对象实例化时不调用 main 方法。构造函数方法将在实例化时调用:
public InterpreterDriver(Conversion content) {
originatingContent = content;
}
推荐阅读
- python - 需要帮助来理解错误:不可散列类型“设置”意味着错误,如何更改为不可变
- c - C中的增量问题(指针)
- c# - 如何从 Azure 容器中的 blob 中获取所有 URL 的列表?
- c# - Ucommerce (Umbraco) 购物篮在切换上下文时删除订单行
- elasticsearch - Elasticsearch 德语词干分析器不做复数
- jmeter - 如何在 Jmeter 的 Beanshell 中拆分字符串
- mybatis - Mybatis and Spring Boot 2.5
- c++ - 未解决的外部符号错误 (LNK2019) ORTools
- gcc - 如何从源代码编译 NuSMV 2.6.0
- php - 用于 gridview 搜索的 yii 性能优化