public class Null {
public static void g() {
System.out.println("hello, world");
}
public static void main(String[] args) {
Null x = null;
x.g();
((Null) x).g();
((Null) null).g();
}
}
字节码
// class version 52.0 (52)
// access flags 0x21
public class Null {
// compiled from: Null.java
// access flags 0x1
public <init>()V
L0
LINENUMBER 1 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
L1
LOCALVARIABLE this LNull; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x9
public static g()V
L0
LINENUMBER 4 L0
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
LDC "hello, world"
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
L1
LINENUMBER 5 L1
RETURN
MAXSTACK = 2
MAXLOCALS = 0
// access flags 0x9
public static main([Ljava/lang/String;)V
L0
LINENUMBER 8 L0
ACONST_NULL
ASTORE 1
L1
LINENUMBER 9 L1
ALOAD 1
POP
INVOKESTATIC Null.g ()V
L2
LINENUMBER 10 L2
ALOAD 1
POP
INVOKESTATIC Null.g ()V
L3
LINENUMBER 11 L3
ACONST_NULL
CHECKCAST Null
POP
INVOKESTATIC Null.g ()V
L4
LINENUMBER 12 L4
RETURN
L5
LOCALVARIABLE args [Ljava/lang/String; L0 L5 0
LOCALVARIABLE x LNull; L1 L5 1
MAXSTACK = 1
MAXLOCALS = 2
}