反编译结果如下:package nc.newinstall;import java.awt.Dimension;
import nc.newinstall.ui.InstallMainUI;
import nc.newinstall.util.OSUtil;public class Install
{
  public static void main(String[] args)
  {
    Flash flash = new Flash();
    Dimension screenSize = OSUtil.getScreenSize();
    int x = (screenSize.width - flash.getWidth()) / 2;
    int y = (screenSize.height - flash.getHeight()) / 2;
    flash.setLocation(x, y);
    flash.setVisible(true);
    new Thread(flash) {
      public void run() {
        while (!this.val$flash.isStop()) {
          try {
            Thread.sleep(500L);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        this.val$flash.setVisible(false);
        this.val$flash.dispose();
        InstallMainUI mainUI = new InstallMainUI();
        mainUI.setVisible(true);
      }
    }
    .start();    new Thread(flash).start();
  }
}Flash是同路径的另一个类
其中“this.val$flash”,这个在java中是什么样子的

解决方案 »

  1.   

    this.val$flash指的是当前类对象的一个方法
    返回值是个对象并调用该对象的isStop(),setVisible等方法..
      

  2.   

    this.val$flash
    这个应该是内部类访问外部类成员时的表征
    此flash就是在main中定义的Flash对象
    可能有内部转换机制才会这样表现形式实际如何不清楚 因为Flash非final的话,不能直接访问
    能不能把相关class文件发出来
      

  3.   


    是不是发不了附件,我把Flash的反编译贴在下面了,我其实比较好奇Install的java怎么写package nc.newinstall;import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.geom.Point2D;
    import java.awt.geom.Point2D.Double;
    import javax.swing.JPanel;
    import javax.swing.JProgressBar;
    import javax.swing.JWindow;
    import nc.newinstall.resource.UIResource;
    import nc.newinstall.util.ImageUtil;
    import nc.newinstall.util.ProductTreeStructScaner;public class Flash extends JWindow
      implements Runnable
    {
      private JPanel jContentPane = null;  private JProgressBar jProgressBar = null;  private JPanel ImgPanel = null;
      Image backImage = null;
      Image motionImage = null;  Point2D start = new Point2D.Double(0.0D, 0.0D);
      double stepX = 5.0D;  public Flash()
      {
        initialize();
      }  public Flash(Frame owner)
      {
        super(owner);
        initialize();
      }  private JProgressBar getJProgressBar()
      {
        if (this.jProgressBar == null) {
          this.jProgressBar = new JProgressBar();
        }
        return this.jProgressBar;
      }  private JPanel getImgPanel()
      {
        if (this.ImgPanel == null) {
          this.ImgPanel = new JPanel() {
            public void paintComponent(Graphics g) {
              super.paintComponent(g);
              Dimension size = getSize();
              if (Flash.this.backImage != null) {
                g.drawImage(Flash.this.backImage, 0, 0, size.width, size.height, this);
              }
              if (Flash.this.motionImage != null) {
                int x = (size.width - Flash.this.motionImage.getWidth(this)) / 2;
                int y = 128;
                g.drawImage(Flash.this.motionImage, x, y, this);
              }
            }
          };
        }
        return this.ImgPanel;
      }  public void run()
      {
        ImageUtil.preLoadImg();
        getJProgressBar().setValue(30);    UIResource.preLoadResource();
        getJProgressBar().setValue(60);    ProductTreeStructScaner.getTreeStruct(".");
        getJProgressBar().setValue(getJProgressBar().getMaximum());
      }
      public boolean isStop() {
        return getJProgressBar().getValue() == getJProgressBar().getMaximum();
      }  private void initialize()
      {
        this.backImage = ImageUtil.getFlashImg();
        this.motionImage = ImageUtil.getInstance().loadImage("/images/motion.gif");
        setSize(384, 308);
        if (this.backImage != null) {
          setSize(this.backImage.getWidth(this), this.backImage.getHeight(this) + getJProgressBar().getPreferredSize().height);
        }
        setContentPane(getJContentPane());
        new Thread() {
          public void run() {
            while (!Flash.this.isStop())
              try {
                Thread.sleep(50L);
                Flash.this.getImgPanel().repaint();
              } catch (InterruptedException e) {
                e.printStackTrace();
              }
          }
        }
        .start();
      }  private JPanel getJContentPane()
      {
        if (this.jContentPane == null) {
          this.jContentPane = new JPanel();
          this.jContentPane.setLayout(new BorderLayout());
          this.jContentPane.add(getJProgressBar(), "South");
          this.jContentPane.add(getImgPanel(), "Center");
        }
        return this.jContentPane;
      }
    }
      

  4.   

    用的什么反编译的? javap?
    用jad反编译应该不会出现这种情况
      

  5.   


    原来用的工具是jd-gui,后来又用xjad反编译了一下,略有区别:// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://kpdus.tripod.com/jad.html
    // Decompiler options: packimports(3) fieldsfirst ansi space 
    // Source File Name:   Install.javapackage nc.newinstall;import java.awt.Dimension;
    import nc.newinstall.ui.InstallMainUI;
    import nc.newinstall.util.OSUtil;// Referenced classes of package nc.newinstall:
    // Flashpublic class Install
    { public Install()
    {
    } public static void main(String args[])
    {
    Flash flash = new Flash();
    Dimension screenSize = OSUtil.getScreenSize();
    int x = (screenSize.width - flash.getWidth()) / 2;
    int y = (screenSize.height - flash.getHeight()) / 2;
    flash.setLocation(x, y);
    flash.setVisible(true);
    (new Thread(flash) { final Flash val$flash; public void run()
    {
    while (!flash.isStop()) 
    try
    {
    Thread.sleep(500L);
    }
    catch (InterruptedException e)
    {
    e.printStackTrace();
    }
    flash.setVisible(false);
    flash.dispose();
    InstallMainUI mainUI = new InstallMainUI();
    mainUI.setVisible(true);
    }
    {
    flash = flash1;
    super();
    }
    }).start();
    (new Thread(flash)).start();
    }
    }
      

  6.   

    看这个类反编译也是这样的:public class Install { public static void main(String args[]) {
    final String flash = new String("123");
    new Thread(flash) { public void run() {
    System.out.println(flash);
    } }.start();
    }
    }
    import java.io.PrintStream;public class Install { public Install() {
    } public static void main(String args[]) {
    final String flash = new String("123");
    (new Thread(flash) { public void run() {
    System.out.println(flash);
    } private final String val$flash; {
    flash = s;
    super($anonymous0);
    }
    }).start();
    }
    }