反编译出来的代码:
----------------------
....
    private static MainWindow singleton;
    private static final Object LOCK = new Object();    public static MainWindow getInstance()
    {
        Object obj = LOCK;
        JVM INSTR monitorenter ;
        if(null == singleton)
        {
            MainWindow controller = new MainWindow(Default.getString("APPLICATION_NAME"), SparkManager.getApplicationImage());
            singleton = controller;
            return controller;
        }
        obj;
        JVM INSTR monitorexit ;
          goto _L1
        Exception exception;
        exception;
        throw exception;
_L1:
        return singleton;
    }
...更改后
----------------
    private static MainWindow singleton;
    private static final Object LOCK = new Object();
   public static MainWindow getInstance()
   {
       Object obj = LOCK;
       if(null == singleton)
       {
           singleton = new MainWindow(Default.getString("APPLICATION_NAME"), SparkManager.getApplicationImage());
       }
       return singleton;
    }请问这样改对吗???
小弟用的是"Jad v1.5.8g". 有没有比jad更好的反编译工具. 最好反编译之后不要有错误???

解决方案 »

  1.   

    不知道.我用的反编译工具(忘了叫什么了,很久之前用的了),反编译之后经常出来class0$,不知道什么意思,其它地方不知道有没有问题.
      

  2.   

    找到源码了.原来这样写    public static MainWindow getInstance()
        {
            synchronized (LOCK)
            {
                if (null == singleton)
                {
                    MainWindow controller = new MainWindow(Default.getString(Default.APPLICATION_NAME), SparkManager.getApplicationImage());
                    singleton = controller;
                    return controller;
                }
            }
            return singleton;
        }