public class C{
static{
if (C2.geti()==1){
//A code
}
if (C2.geti()==2){
//B code
}
}

解决方案 »

  1.   

    bu hao yi si ,dai wei ji qi mei you zhong wen
    1 cheng xu bu neng gai .
    2 zhe shi bie ren de cheng xu,
      yao qiu ce shi shi,dai ma dou neng yun xing.xie xie
      

  2.   

    修改classloader把强制指定load这个class的loader如果要更新这个class的话把这个loader=null,然后再new 一个新的loader来load这个class
      

  3.   

    至于“static int i=0”是否能通过反射把i的值该掉,当然前提是有权限的前提下
      

  4.   

    看来是想非法使用人家的类吧?java确实不能卸载class,但是可以再次载入啊。
      

  5.   

    既然这样,就不客气了。自己编写类装载器(classloader),装载字节码后,把 if 和 else 破坏掉,将相应的字节码变成 nop 指令,相当于:
    public class C{
    static{
    /*if (C2.geti()==1)*/{
    //A code
    }/* else */{
    //B code
    }
    }
    AOP的一种实现方式就是修改字节码的。
    另外,在一个类装载器中装入C一次,再在另一个类装载器中再装载C一次,这样A代码和B代码都执行了,虽然是在不同的类装载器中。