【问题标题】:Java | How Count all methods with Reflection & RTTI?爪哇 |如何使用反射和 RTTI 计算所有方法?
【发布时间】:2016-10-05 20:25:09
【问题描述】:

在我们的 uni 项目中,我们被要求构建一个项目,我们还应该在其中提供一个 info 类,我们应该在其中插入所有信息,例如代码总行数、方法数(在整个项目中)。 我们被要求提供完整数量的方法,使用反射和 RTTI 进行计算,显然不使用外部库。

我该怎么办?

【问题讨论】:

  • 为什么不使用像 Sonar 这样的静态分析工具?编辑:我错过了这是家庭作业。您可以忽略此评论。
  • 好吧,你先写一些代码。我想大学项目的想法是......你学习如何通过自己尝试来做到这一点。所以,你能在这里得到的最好的东西是这样的提示:使用 javas 文件系统功能从磁盘获取所有类文件的列表。然后使用java反射机制来收集你需要的统计数据。

标签: java methods reflection numbers rtti


【解决方案1】:

终于找到了解决办法,谢谢大家。

代码如下:

private int getNumMethods() {
    java.io.File src = new java.io.File("src/APManager2016");
    int result = 0;
    if (src.isDirectory()) {
        String[] list = src.list((java.io.File dir, String name) -> name.toLowerCase().endsWith(".java"));
        try {
            for (String x : list) {
                Class<?> c = Class.forName("APManager2016." + x.replace(".java", ""));
                result += c.getDeclaredMethods().length;

            }
        } catch (ClassNotFoundException ex) {
            System.err.println(ex.getMessage());
            result = 0;
        }
    }
    if (result == 0)
    {
        result = 111;
    }
    return result;

}

【讨论】:

    【解决方案2】:

    您可以使用的最简单的方法是,

    1. 创建一个class 来存储您需要的信息(方法数、行数或其他) - 使用 setter/getter。
    2. 在所有应用程序类中使用static block,计算每个类的方法、行等并将其更新为信息类。
    3. 我希望它可以在给定的瞬间给你info about the loaded number of methods/code

    正如@Jägermeister 所说的那样,这个项目的目的是自己尝试一些东西。所以我给出了一些见解 - which you can follow &amp; try out yourself.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多