ich durch das Lesen im Internet herausgefunden, dass javaMit javap zum Lesen des Bytecode
public class Test {
private String s = "TESTTEST";
}
zu
rechtspublic class Test {
private String s;
public Test() {
s = "TESTTEST";
}
}
Bin ich kompiliert?
Jetzt habe ich versucht, dies selbst zu verstehen. So kompilieren ich die Klasse Test.java
von
javac Test.java
Nach dem Aufruf, ich habe gelesen, dass ich javap
verwenden können, den kompilierten Code (= Byte-Code) zu lesen.
Also habe ich versucht, die Umstrukturierung aus dem Compiler in dem Byte-Code zu sehen, die ich oben erwähnt habe (dass die Deklaration IN im Konstruktor ist). Aber wie?? Ist javap
das richtige Werkzeug dafür? Wenn ja, mit welchen Parametern?
Danke für Ihre Hilfe!
bearbeiten:
Ok, danke so weit! Können Sie mir bitte erklären, wie man die Ausgabe von javap -c Test
liest?
C:\Users\MyName\Desktop>javap -c Test
Compiled from "Test.java"
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #2 // String TESTTEST
7: putfield #3 // Field s:Ljava/lang/String;
10: return
}
Das einzige, was ich in Ihrer Ausgabe sehe, ist der Konstruktor. 'public Test()' heißt so, wie es in Ihrer Quelldatei heißt. Du musst also nicht weit schauen, es ist direkt vor dir. Oder verstehe ich nicht, wonach du suchst? –
Welche Veränderung erwarten Sie? Die zwei Formen sind gleichwertig. –
Vielleicht könnten Sie in Ihre Frage eine Erklärung eingeben, was * Sie * denken, dass Ihre 'javap' Ausgabe bedeutet, und warum? Es sieht für mich wie Ihr zweiter Codeblock aus, und wenn ich Sie verstehe, haben Sie das erwartet. Ich bin also nicht sicher, warum du das Gefühl hast, dass du es nicht gefunden hast. –