首页
题库
面试
求职
学习
竞赛
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收藏
2474浏览
热门推荐
相关试题
在大语言模型中,什么是"Gated...
大模型开发
评论
(1)
下面关于 Java 中的异常处理说...
Java
评论
(1)
关于大模型“上下文窗口”的理解,以...
大模型概念
评论
(1)
Vue Router的全局前置守卫...
Vue
评论
(1)
在Vue.js中,组件data选项...
Vue
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题