java类方法存根用/ *编译代码* /

时间:2013-08-26 13:30:35

标签: java

我刚收到第三方身份验证库,可以在我的客户端应用程序中使用。我没有收到任何关于它的文档,我正在尝试挖掘源代码,看看它是如何工作的。当我点击转到 - >时,我非常喜欢新Java关于IntelliJ中的方法的声明它将我发送到.class文件,我在方法中看到了一堆带有/* compiled code */的存根方法。

我很确定这在Java中很常见,我只是不知道要搜索什么来了解到底发生了什么。任何澄清都会很棒。

3 个答案:

答案 0 :(得分:4)

这通常意味着您没有源代码,IntelliJ只显示/* compiled code */作为您没有的源代码的占位符。

要真正了解正在发生的事情,最好的方法是接收第三方库的源代码。

您当然也应该获取文档,因为阅读源代码并猜测如何使用库通常不是最好的学习方法。

第二个最好的选择是安装IntelliJ的反编译器插件,如IntelliJAD,它将自动反编译Java类文件(请注意,您的第三方库的许可证可能不允许您这样做)。这永远不会是100%的解决方案,但在某些情况下,它总比没有好。

答案 1 :(得分:1)

如果您的图书馆是使用sourceFiles构建的:

 task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles//look at this line
    }

然后您将看到带有/* compiled code */的课程

如果您的图书馆是使用srcDirs构建的:

 task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from from android.sourceSets.main.java.srcDirs//look at this line
    }

然后您将看到不含/* compiled code */的完整源代码类

答案 2 :(得分:0)

您应该真正搜索/索取文档。如果方法做了你无法从它的名字猜测的东西,Javadoc通常是非常宝贵的。否则使用反编译器,例如JD-GUI

.java源代码由编译器(如javac)编译为 .class字节码。如果高度不太可能产生相同的源,编译器可以优化特定的事物和编译 - 反编译过程。此外,应删除所有注释,如果代码未在调试模式下编译,则即使变量名也会丢失。所以:反编译是手工文档的一个很好的替代品。