Java调用Python
来源:互联网 发布:航天税金软件 编辑:程序博客网 时间:2024/05/24 03:09
项目中有特殊要求,为了灵活,某个接口需要在Python脚本中实现,然后在Java代码中调用Python脚本来实例化对象。
网上一般的文章都是用PythonInterpreter来调用,不过大神说创建PythonInterpreter会消耗很多资源,影响效率,可以使用PySystemState,
先用PySystemState得到一个importer再导入Python的module,得到module里的类的实例,至于原理,我不是很懂。
首先是Python脚本,这里简单意思一下就好,毕竟可能涉及公司规定,不宜将全部代码都贴出来。
#省略importclass ClassName(InterfaceName): def __init__(self): #省略若干代码 def function(self): #省略若干代码 #省略若干代码其中,ClassName是该类的类名,InterfaceName是实现的Java接口的名字,接下来是Java代码
public static void main(String[] args) { PySystemState state = new PySystemState();PyObject clazz;Py.getSystemState().path.append(Py.newString("E:\\dir"));PyObject importer = state.getBuiltins().__getitem__(Py.newString("__import__"));PyObject module = importer.__call__(Py.newString("Script"));clazz = module.__findattr__("ClassName");InterfaceName obj = (InterfaceName) clazz.__call__().__tojava__(InterfaceName.class);}这里将脚本文件放在了E盘的dir文件夹下,Script是脚本文件的名字(注意不能为test,否则报空指针),这样就得到了实现InterfaceName接口的类的对象,与直接使用Java实现该接口没有什么区别,作用就是在程序运行的时候也可以在不修改Java代码的情况下添加新的类,比较灵活。
0 0
- Java调用Python
- java调用Python文件
- java 调用python
- python调用java
- python 调用Java
- java中调用python
- Java调用Python
- Java调用Python脚本
- Java直接调用Python
- Java调用Python
- python调用java
- Java调用python
- java调用python
- java 调用python
- python调用java函数
- java调用Python
- java中调用python
- Java调用Python脚本
- httpclient https忽略证书直接请求
- 深入理解JVM--JVM垃圾回收机制
- 一些恶搞的bat小脚本
- 走进Linux01-磁盘分区与目录结构
- 如何在真机上调试Android应用程序(图文详解)
- Java调用Python
- 一个在线看android系统各个版本源码的链接
- Zookeeper架构学习(四):ZAB协议
- android_Environment类
- riot.js 学习【一】自定义标签
- 优先级队列的实现
- HttpURLConnection
- 使用VS2010时遇到的一些小问题的解决方案(从各处搜罗总结的,不定期更新,向原作者致敬)
- Uva - 10815 - Andy's First Dictionary