反编译结果如下: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中是什么样子的
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中是什么样子的
返回值是个对象并调用该对象的isStop(),setVisible等方法..
这个应该是内部类访问外部类成员时的表征
此flash就是在main中定义的Flash对象
可能有内部转换机制才会这样表现形式实际如何不清楚 因为Flash非final的话,不能直接访问
能不能把相关class文件发出来
是不是发不了附件,我把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;
}
}
用jad反编译应该不会出现这种情况
原来用的工具是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();
}
}
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();
}
}