Java动态编译,如何解决依赖类的导入?
在想那些提交Java
代码然后得到运行结果的网站,比如leetcode
,他们是怎么实现的呢?
想到的实现方式就是
- 拿到页面上提交的代码
- Java的动态编译,生成字节码文件
- 类加载器加载编译好的类
- 利用反射调用目标方法
- 其他业务逻辑...
- 返回结果
自己在实现的过程中,遇到一个问题,就是如果提交的代码中使用了java.lang
包之外的类,比如使用了Arrays
,
该如何解决导入的问题。(leetcode
上是不用用户自己写import
语句的)
想到的方式就是:不管用没用到,全部导入。
在提交的代码前全部拼上
import java.util.*;
import ...;
但是这样编译会变慢,而且也挺麻瓜的。
想问下有没有其他实现的方式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不清楚他们怎么实现的,说下我的想法把。
首先先问你一个问题:你能说出java自带类库中重名的类有几对?这些重名的类是所有都是常见的吗?
在考虑下这种网站不会有图形界面相关的代码,所以,所有图形界面等相关的类都不会用。大多数注解也都没有用。
考虑过这些因素以后还能找到重名的类吗?
如果找不到,直接做一个类名和完整类名的映射,然后自动导入。
如果还找的到,把基本上不可能用得到的类删了,再做映射。