首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
开发一个工具类,该工具类提供一个eva()方法,实现Java
[问答题]
开发一个工具类,该工具类提供一个eva()方法,实现JavaScript中eval()函数的功能一可以动态运行一行或多行程序代码。例如eval("System.out.printin("a")"),将输出aa。
添加笔记
求解答(0)
邀请回答
收藏(18)
分享
纠错
1个回答
添加回答
0
牛客2423454号
/** * Java创建一个类似于js中eval()的方法 */ public class EvalUtil { public static void main(String[] args) throws Exception { eval("int a = c; int b = 2; System.out.println(a+b);"); } public static void eval(String javaStr) throws Exception { StringBuffer str = new StringBuffer(); str.append("public class Eval {").append("public static void main(String[] args) {").append(javaStr).append("}}"); OutputStream out = new FileOutputStream("Eval.java"); out.write(str.toString().getBytes("gbk")); out.close(); // 编译时 错误信息 Process javacProcess = Runtime.getRuntime().exec("javac Eval.java"); InputStream compileError = javacProcess.getErrorStream(); System.err.println(read(compileError)); compileError.close(); Process javaProcess = Runtime.getRuntime().exec("java Eval"); //运行时 错误信息 InputStream err = javaProcess.getErrorStream(); System.err.println(read(err)); err.close(); //运行时 正常信息 InputStream success = javaProcess.getInputStream(); System.out.println(read(success)); success.close(); //删除生成文件 new File("Eval.java").delete(); new File("Eval.class").delete(); } private static String read(InputStream in) throws IOException { byte[] b = new byte[1024]; int len = -1; StringBuffer str = new StringBuffer(); while ((len = in.read(b)) != -1) { str.append(new String(b, 0, len, "gbk")); } return str.toString(); } }
发表于 2019-02-20 15:28:08
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Java
上传者:
小小
难度:
1条回答
18收藏
2310浏览
热门推荐
相关试题
《拳皇97》最后BOSS是谁?
游戏常识
评论
(1)
《魔兽世界》中,下列不属于玩家可以...
游戏常识
评论
(1)
5.下列判断正确的是( )
资料分析
言语理解与表达
资料分析
评论
(1)
假定一个待哈希存储的线性表为(32...
哈希
评论
(1)
你有没有崇拜的偶像,你欣赏他/她身...
通用能力
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题