像java中的命令一样实现String

时间:2013-08-28 10:04:16

标签: java string

我正在尝试像Java中的命令一样实现String:

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

我需要将命令String转换为命令行,以便在控制台中执行输出“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个月的属性。 (即1月,2月等...)然后我有命令字符串:'leaveDetailCLateLEarly.month = 10',其中月份值可以改变(1月,2月,3月,......)。项目运行时,String将转换为命令行以实现所需的功能。

2 个答案:

答案 0 :(得分:5)

这是我多年前使用Compiler API编写的库。 Essence JCF它编译并加载任何String作为类文件。 (包括嵌套类)而不触及磁盘。

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

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

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

答案 1 :(得分: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!");