使⽤python解析Java类
0x00 前⾔
遇到这样⼀个基础需求:
需要提取Java中的所有⽅法
需要过滤所有访问权限为public的⽅法。
0x01 提取Java中的⽅法
语⾔:python
库:javalang
直接使⽤pip install 安装即可。
java调用python模型直接提供解决⽅案,中间夹杂了很多测试过程,这⾥不进⾏记录。
使⽤parse模块直接读取,会读取到⼀个⽅法,这个⽅法中的types会存有所有类信息的列表。
tree = javalang.parse.ad())
如果是直解析⼀个类则可以直接选择types[0]
pes[0]
获取到的classs同样包含了两类内容,⼀个是属性,还有⼀个是⽅法,每⼀个都对应了⼀个具体内容。我们使⽤classs.body进⾏获取
for i in classs.body:
这⾥我只想要读取到method,⽽不想要属性,选择取巧的⽅式,属性不具备body属性,所以可以先进⾏i.body,再进⾏异常抛出即可。在method类中modifiers表⽰前缀,则可以直接使⽤in的⽅式挑出public属性的⽅法:
for i in classs.body:
try:
if"public"difiers:
i.body
print(i.name)
except Exception as e:
pass
最终解决⽅案如下:
import javalang
with open("cs.java","r",encoding='utf-8')as f:
tree = javalang.parse.ad())
pes[0]
for i in classs.body:
try:
if"public"difiers:
i.body
print(i.name)
except Exception as e:
pass
效果如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。