Skip to content

Instantly share code, notes, and snippets.

@seanadkinson
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seanadkinson/11264129 to your computer and use it in GitHub Desktop.
Save seanadkinson/11264129 to your computer and use it in GitHub Desktop.
Compiling static finals
☕ javap -c Gate\$StaticFinal2Gate.class
Compiled from "Gate.java"
public class Gate$StaticFinal2Gate {
public Gate$StaticFinal2Gate();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_0
6: putfield #2 // Field flag:Z
9: return
public void runit();
Code:
0: return
}
☕ javap -c Gate\$StaticFinalGate.class
Compiled from "Gate.java"
public class Gate$StaticFinalGate {
public Gate$StaticFinalGate(boolean);
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iload_1
6: putfield #2 // Field flag:Z
9: return
public void runit();
Code:
0: aload_0
1: getfield #2 // Field flag:Z
4: ifeq 15
7: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;
10: ldc #4 // String OK
12: invokevirtual #5 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
15: return
}
☕ javap -c Gate\$StaticGate.class
Compiled from "Gate.java"
public class Gate$StaticGate {
public Gate$StaticGate(boolean);
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iload_1
6: putfield #2 // Field flag:Z
9: return
public void runit();
Code:
0: aload_0
1: getfield #2 // Field flag:Z
4: ifeq 15
7: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;
10: ldc #4 // String OK
12: invokevirtual #5 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
15: return
}
public class Gate {
public static class StaticGate {
private boolean flag;
public StaticGate(boolean flag) {
this.flag = flag;
}
public void runit() {
if (flag) {
System.out.println("OK");
}
}
}
public static class StaticFinalGate {
private final boolean flag;
public StaticFinalGate(boolean flag) {
this.flag = flag;
}
public void runit() {
if (flag) {
System.out.println("OK");
}
}
}
public static class StaticFinal2Gate {
private final boolean flag = false;
public void runit() {
if (flag) {
System.out.println("OK");
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment