用于分析Java源代码的API

用于分析Java源代码的API,java,structure,analyzer,Java,Structure,Analyzer,我正在设计一个模块来分析Java源代码并获得其结构。 例如:如果有一个名为Demo.java的文件 public class A{ private String str = "Hello World"; public int i = 0; public void f0(){} } 然后如何发现类“Demo”包含以下消息: >字段[]-->str:String i:int >方法[]--->f0:void 它看起来像一个语法分析器。我正在寻找任何API、框架或开源代码

我正在设计一个模块来分析Java源代码并获得其结构。 例如:如果有一个名为Demo.java的文件

public class A{
    private String str = "Hello  World";
    public int i = 0;
    public void f0(){}
} 
然后如何发现类“Demo”包含以下消息:

  • >字段[]-->str:String i:int
  • >方法[]--->f0:void
  • 它看起来像一个语法分析器。我正在寻找任何API、框架或开源代码 为了更好的完成我的工作,如果你有什么想法,请与我分享,
    非常感谢您的支持

    你最好的猜测是基于反思的方法

    以下库可能很有用:

    • 番石榴()
    • 共同点:小动物/反射()

      • 你最好的猜测是基于反思的方法

        以下库可能很有用:

        • 番石榴()
        • 共同点:小动物/反射()

        阿帕奇公地豆或番石榴

        来自Apache Commons:


        Java语言提供反射和内省API(请参阅JDK Javadocs中的Java.lang.reflect和Java.bean包)。然而,理解和利用这些API可能相当复杂。BeanUtils组件围绕这些功能提供了易于使用的包装。

        Apache Commons BeanUtils或guava reflection

        来自Apache Commons:


        Java语言提供反射和内省API(请参阅JDK Javadocs中的Java.lang.reflect和Java.bean包)。然而,理解和利用这些API可能相当复杂。BeanUtils组件围绕这些功能提供了易于使用的包装。

        反射最适合于此

        比如说

        Class cls = Class.forName("com.dds.core.Emp");          
        Object obj = cls.newInstance();         
        Field[] fields = cls.getDeclaredFields();
        
        可以迭代这些字段以获得完整列表。对于方法、构造函数等也有类似的方法


        几行简单的代码就可以做到这一点。

        反射最适合这一点

        比如说

        Class cls = Class.forName("com.dds.core.Emp");          
        Object obj = cls.newInstance();         
        Field[] fields = cls.getDeclaredFields();
        
        可以迭代这些字段以获得完整列表。对于方法、构造函数等也有类似的方法


        几行简单的代码就可以做到这一点。

        询问库/框架或其他非现场资源的问题是离题的,它们无法得到明确回答,并导致讨论/广告询问库/框架或其他非现场资源的问题是离题的,无法明确回答这些问题并导致讨论/广告