取决于你想要的。如果执行后想让s1和s100可用于进一步使用,那么这根本不可能。也不可能编写任何可以访问任何非全局变量的代码。
你可以做的是编写一个类,它实现一个接口并在运行时编译该类。然后可以使用反射来实例化这个新类的实例。如果接口提供了适当的方法,则可以在执行前,执行期间和执行后查询此对象。您也可以使用反射访问对象的字段。
虽然这是非常黑客,并试图以Java不适合的方式完成的事情。如果你只想创建100个任意字符串,那么最好使用一个数组并创建你自己的小型DSL来完成简单的任务。
您可能希望尝试的最后一种方法是使用在JVM上运行的脚本语言,如Jython或Groovy。 Groovy对此很棒。由于Groovy是Java的超集,因此您不必担心有效的Java无法编译。尽管可能会担心的是无效的Java可能会被编译。例如String s = 'some string'
是有效的Groovy,但不是有效的Java。
使用Groovy,你可以这样做:
import groovy.lang.GroovyShell;
public class SomeClass {
public static void main(String[] args) {
GroovyShell shell = new GroovyShell();
for (String arg : args) {
Object result = shell.evaluate(arg);
System.out.println("result is: "+result);
}
}
}
对于这一点,你可以有说String s1 = "hello";
,String s2 = "world";
和String combined = s1 + " " + s2;
的输入ARGS。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – asawyer 2012-04-16 12:42:59
这还不清楚。你试图解决什么问题? – 2012-04-16 12:44:01
它不是问题 – Trikaldarshi 2012-04-16 12:44:31