[/code]
[code="java"]
public class C {
    void g() {
        B b1 = new B();
        b1.protect();
        System.out.println(b1.i);
    }
    public static void  main(String[]args)
    {
    	new C().g();
    }
}

调用g的方法的字节码

void g()
    {
    //    0    0:new             #2   <Class B>
    //    1    3:dup             
    //    2    4:invokespecial   #3   <Method void B()>
    //    3    7:astore_1        
    //    4    8:aload_1         
    //    5    9:invokevirtual   #4   <Method void B.protect()>
    //    6   12:getstatic       #5   <Field PrintStream System.out>
    //    7   15:aload_1         
    //    8   16:getfield        #6   <Field int B.i>
    //    9   19:invokevirtual   #7   <Method void PrintStream.println(int)>
    //   10   22:return          
    }

可以看出先创建对象

new #2<Class.b>

存入局部变量 也就是压入栈中!对象的引用

然后加载B Class实例的方法proctect方法

也就是说装载Class实例是连接程序和类数据结构的纽带!!