【问题标题】:How to find source code of a method in Java? [duplicate]如何在 Java 中找到方法的源代码? [复制]
【发布时间】:2021-01-08 20:52:13
【问题描述】:

我正在使用 Java/Eclipse,我想知道如何检查这些方法的工作方式。

比如,当我写作时

Math.sqrt(16)

它返回值 4,但是如何呢?这种方法实际上是如何做到的?其背后的逻辑是什么?有没有办法查看它们?

【问题讨论】:

    标签: java eclipse methods


    【解决方案1】:

    如果您使用任何类型的 IDE,例如 InteliJ IDEA 或 Geany,您只需在按住 control(CTRL) 键的同时单击方法名称即可访问导入的或内置的方法。然后您可以看到该代码中的内容。如果该代码中有更多方法,也对它们执行相同的操作。然后您将能够了解该方法的工作原理。

    在您的示例中在面向对象编程中考虑它时,这里我们没有创建一个对象来使用该方法。这意味着 Math 类有一个名为 sqrt 的静态方法,它可以接受一个数字作为参数,并且它的返回类型也被声明为数字。

    【讨论】:

    • 谢谢,但在 Eclipse 中它没有按预期工作。 CTRL+Click 正在打开该类,是的,但它打开了代码的编译形式。所以我什么都看不懂。它说“JAR 文件 C:\Program Files\Java\jre-10.0.2\lib\jrt-fs.jar 没有源附件”,如果您知道如何解决这个问题,请在下面写下。我也会在 IntelliJ IDEA 上尝试一下。
    • @UmutEmreÖnder 看起来你只安装了 JRE,你需要 JDK 才能看到源代码。但是 Math.sqrt 是作为 native 方法实现的,因此即使是 JDK 也无助于该特定方法。它还带有@HotSpotIntrinsicCandidate 注释,因此 JIT 可以将其直接转换为机器指令。
    • 其实我是告诉你关于接收用户自定义代码内部的视图。即使您看不到本机方法,但您肯定可以看到用户定义的方法及其代码内部。通过创建自己的方法来亲自尝试,该方法可以在另一个类或另一个包中声明。您可能需要将这些类(如果它们不在同一个包中)导入您的工作类以使用该方法,并且 CTRL + 单击也适用于这种情况。
    【解决方案2】:

    标准库是在 JDK 中实现的。 OpenJDK 遵循 GNU 通用公共许可证,它是 JDK 的实现,大多数其他实现都基于它构建。你可以在 GitHub here 上找到它的源代码。导航有点难,不过sqrt函数的实现最终还是可以在here找到的。它被广泛记录。有关sqrt 实现和其他Java 数学实现的更多信息可以在this question 的答案中找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多