0

我正在尝试在 Java 中实现一个类似于命令的字符串:

public static void main(String[] args) {
   String command = "System.out.println("hello word");";
   ...
}

我需要将命令字符串转换为命令行,以便在控制台中执行输出“hello word”。我想使用这项技术来改进代码:

SimpleDateFormat sdf = new SimpleDateFormat("MMMM");
String month = sdf.format(calIndex.getTime()); 
switch (month) { 
   case "January": 
       leaveDetailCLateLEarly.february += 10;
       break; }
...

上面说的很啰嗦。我想写一些更短的东西:

String command = "leaveDetailCLateLEarly."+ month + "+= 10"

其中 leaveDetailCLateLEarly 是一个对象,具有 12 个月的属性。(即一月、二月等……)然后我有命令字符串:'leaveDetailCLateLEarly.month= 10',其中月份值可以更改(一月、二月、三月……)。当项目运行时,字符串将转换为命令行以实现所需的功能。

4

2 回答 2

5

这是我多年前使用 Compiler API 编写的一个库。Essence JCF 它将任何字符串编译并加载为类文件。(包括嵌套类)不接触磁盘。

您还可以使用 Beanshell 来动态运行 Java 代码。许多 Java 调试器都使用它,但它不是 Java 的全功能版本。

另一种方法是使用支持所有 Java 代码并动态运行的 groovy。

这些方法都不是微不足道的,也不是广泛使用的。我建议您重新考虑为什么需要这样做并尝试不同的方法。

于 2013-08-28T10:10:54.063 回答
0

不确定你在问什么。如果用户输入字符串“command”,您是否希望显示“hello world”消息?如果是这样,试试这个:

Scanner scanner = new Scanner(System.in);
String input ="";
do{
  System.out.println("Command?:");
  input = scanner.nextLine();
while(!input.equals("command"));
System.out.println("Hello world!");
于 2013-08-28T10:10:58.720 回答