從去一些類的源我看到一些方法包含編譯的代碼,他們是這個樣子的擴大前:某些方法包含編譯代碼?
public void someMethod(){
編譯代碼
}
當擴展您的方法可以看到裏面的代碼被寫爲註釋。
見該方法的一個從sun.awt.shell.ShellFolder
:
public boolean isFileSystem() {
// <editor-fold defaultstate="collapsed" desc="Compiled Code">
/* 0: aload_0
* 1: invokevirtual #362 // Method getPath:()Ljava/lang/String;
* 4: ldc #7 // String ShellFolder
* 6: invokevirtual #342 // Method java/lang/String.startsWith:(Ljava/lang/String;)
/........
*/
// </editor-fold>
}
我有興趣知道更多關於這些方法和使用什麼語言。
是否可以編寫我自己的編譯代碼?
這就是Java。這是反向工程的JVM字節碼('.class'文件)。他們表明,他們無法訪問實際的源代碼。 – acdcjunior
作爲練習,請查找名爲'javap'的工具(它與JDK一起提供,如'javac')。這樣做:編譯一個簡單的類,比如'Test.java',到編譯好的'Test.class'所在的文件夾並執行'javap -c Test.class'。你會看到確切的'0:aload_0 1:invokevirtual#362'東西。 – acdcjunior
請注意,如果代碼未被模糊處理,您可以使用[JD](http://java.decompiler.free.fr) – LanguagesNamedAfterCofee