一有挑战性的问题:高手请进来。。如何将字符串变为执行代码。。 我需要在服务器上用的。。js是客户端口的或者说我需要输入java源代码的方式能运行此源代码。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在实际问题中碰到过,不过我的System.out.println(\"action is test\")”;相当于一个变量,即: String aa="hello world!"; String bb="abc"; String cc="123"; String print_str1="aa,cc"; String print_str2="bb,cc"我想使 out.println(print_str1) 打印出hello world!123 out.println(print_str2) 打印出abc123不知道怎么处理才会得到这种效果!关注中... 可以用java的底层反射机制,Class.forName(String className);你取出System这一段字符串传给这个方法,然后根据out这段字符串,找到System的成员变量out,然后再找到它的方法。 mydreamkyle(mydreamfly) :能简单说个例子吗。。我对反射机制不太了解。你提示一下。或者给个例子大家看,感激不金兄弟祝大家:新年快乐:)呵呵:) 搜索一下,beanshell可能满足你想实现的功能。 chxinfo(linzi)的问题解答public class Test { public static void main(String[] args) throws Exception { if(args.length <1) { System.out.println("Usage: Test someword"); System.out.println("Example: Test aa,bb"); System.exit(0); } String sentence = args[0]; WordLib wl = new WordLib(); java.lang.reflect.Field[] fields = WordLib.class.getDeclaredFields(); java.util.Hashtable ht = new java.util.Hashtable(fields.length); for(int i=0; i<fields.length; i++) { ht.put(fields[i].getName(), fields[i].get(wl)); } StringBuffer sb = new StringBuffer(); java.util.StringTokenizer st = new java.util.StringTokenizer(sentence, ","); while(st.hasMoreTokens()) { String word = st.nextToken(); if(ht.containsKey(word)) { sb.append(ht.get(word)); } else { sb.append(word); } } System.out.println(sb.toString()); }}class WordLib { final String aa = "hello world!"; final String bb = "abc"; final String cc = "123";} laizg (laizg) 的问题, 前面有人说在js中可以实现. 也就是个eval函数的功能.但是, 高级语言大多数都不支持eval函数, 据说是因为这个比较危险.退一步来看, 有限地支持是完全可以的. 反射机制可以实现.待我再试试. 看一下这个:http://dev.csdn.net/develop/article/15/15090.shtm。 beanshell这个开源项目可以实现。 给laizg (laizg)的解答, 不用反射的实现public class Test1 { public static void main(String[] args) throws Exception { if(args.length <1) { System.out.println("Usage: Test someword"); System.out.println("Example: Test \"System.out.println(\\\"action is test\\\");\""); System.exit(0); } String sentence = args[0]; java.io.File f = new java.io.File("DynamicExec.java"); java.io.FileWriter fw = new java.io.FileWriter(f); fw.write("public class DynamicExec{public static void run(){"); fw.write(sentence, 0, sentence.length()); fw.write("}}"); fw.close(); Runtime.getRuntime().exec("javac DynamicExec.java").waitFor(); Class.forName("DynamicExec").getMethod("run", null).invoke(null, null); f.delete(); f = new java.io.File("DynamicExec.class"); f.deleteOnExit(); }} 关于asp中如何选取数据库中相同记录的前两条 EL和JSTL在开发中用得多吗? 用服务器上自带的IIS的smtp服务发送邮件失败问题,急!!! Ajax Javascript 遍历table时报错 我用bean连接数据库,是access出现下面的错误 struts国际化的问题 servlet filter倒底能在什么情况下用呢? 一个关于Session的问题 java读取远程图片显示到jsp页面 如何在JavaScript中取得java代码中Vector的值 急求jsp手册 jsp 新手的问题!请各位指点!
相当于一个变量,即:
String aa="hello world!";
String bb="abc";
String cc="123";
String print_str1="aa,cc";
String print_str2="bb,cc"
我想使
out.println(print_str1) 打印出hello world!123
out.println(print_str2) 打印出abc123
不知道怎么处理才会得到这种效果!关注中...
能简单说个例子吗。。我对反射机制不太了解。你提示一下。或者给个例子大家看,感激不金兄弟祝大家:新年快乐:)呵呵:)
public class Test { public static void main(String[] args)
throws Exception {
if(args.length <1) {
System.out.println("Usage: Test someword");
System.out.println("Example: Test aa,bb");
System.exit(0);
}
String sentence = args[0];
WordLib wl = new WordLib();
java.lang.reflect.Field[] fields = WordLib.class.getDeclaredFields();
java.util.Hashtable ht = new java.util.Hashtable(fields.length);
for(int i=0; i<fields.length; i++) {
ht.put(fields[i].getName(), fields[i].get(wl));
} StringBuffer sb = new StringBuffer();
java.util.StringTokenizer st = new java.util.StringTokenizer(sentence, ",");
while(st.hasMoreTokens()) {
String word = st.nextToken();
if(ht.containsKey(word)) {
sb.append(ht.get(word));
} else {
sb.append(word);
}
}
System.out.println(sb.toString());
}
}class WordLib {
final String aa = "hello world!";
final String bb = "abc";
final String cc = "123";
}
但是, 高级语言大多数都不支持eval函数, 据说是因为这个比较危险.
退一步来看, 有限地支持是完全可以的. 反射机制可以实现.
待我再试试.
public class Test1 {
public static void main(String[] args)
throws Exception {
if(args.length <1) {
System.out.println("Usage: Test someword");
System.out.println("Example: Test \"System.out.println(\\\"action is test\\\");\"");
System.exit(0);
}
String sentence = args[0];
java.io.File f = new java.io.File("DynamicExec.java");
java.io.FileWriter fw = new java.io.FileWriter(f);
fw.write("public class DynamicExec{public static void run(){");
fw.write(sentence, 0, sentence.length());
fw.write("}}");
fw.close();
Runtime.getRuntime().exec("javac DynamicExec.java").waitFor();
Class.forName("DynamicExec").getMethod("run", null).invoke(null, null);
f.delete();
f = new java.io.File("DynamicExec.class");
f.deleteOnExit();
}
}