0


使用python解析Java类

0x00 前言

遇到这样一个基础需求:

  • 需要提取Java中的所有方法
  • 需要过滤所有访问权限为public的方法。

0x01 提取Java中的方法

  • 语言:python
  • 库:javalang

直接使用pip install 安装即可。

直接提供解决方案,中间夹杂了很多测试过程,这里不进行记录。

使用parse模块直接读取,会读取到一个方法,这个方法中的types会存有所有类信息的列表。

tree = javalang.parse.parse(f.read())

如果是直解析一个类则可以直接选择types[0]

classs=tree.types[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"in i.modifiers:
                i.body
                print(i.name)except Exception as e:pass

最终解决方案如下:

import javalang
withopen("cs.java","r",encoding='utf-8')as f:
    tree = javalang.parse.parse(f.read())
    classs=tree.types[0]for i in classs.body:try:if"public"in i.modifiers:
                i.body
                print(i.name)except Exception as e:pass

效果如下:
在这里插入图片描述

标签: java python

本文转载自: https://blog.csdn.net/qq_36869808/article/details/120654802
版权归原作者 王嘟嘟_ 所有, 如有侵权,请联系我们删除。

“使用python解析Java类”的评论:

还没有评论