请耐心看下:
import java.awt.*;
import java.awt.event.*;
public class Cen
{
private static Button b;
private static Button c;
public static void main(String args[])
{
Frame f=new Frame("Test");
b=new Button("Bc");
b.addActionListener(new ButtonHandler());
c=new Button("C");
c.addActionListener(new ButtonHandler());
f.setLayout(new FlowLayout());
f.add(b);
f.add(c);
f.setSize(200,100);
f.setVisible(true);
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("all");
if(e.getSource().equals(b))
System.out.println("b");
if(e.getSource().equals(c))
System.out.println("c");
}
}
}
}这个程序是编译会出错的.这是肯定的.
现在的问题是在同一个目录下有已经ButtonHandler.class(它是编译正确的)
这样的情况使javac Cen.java 居然能编译正确.
这是为何,按理说内部类应该生成 Cen&ButtonHandler.class.
希望大家支持下,解释下...
import java.awt.*;
import java.awt.event.*;
public class Cen
{
private static Button b;
private static Button c;
public static void main(String args[])
{
Frame f=new Frame("Test");
b=new Button("Bc");
b.addActionListener(new ButtonHandler());
c=new Button("C");
c.addActionListener(new ButtonHandler());
f.setLayout(new FlowLayout());
f.add(b);
f.add(c);
f.setSize(200,100);
f.setVisible(true);
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("all");
if(e.getSource().equals(b))
System.out.println("b");
if(e.getSource().equals(c))
System.out.println("c");
}
}
}
}这个程序是编译会出错的.这是肯定的.
现在的问题是在同一个目录下有已经ButtonHandler.class(它是编译正确的)
这样的情况使javac Cen.java 居然能编译正确.
这是为何,按理说内部类应该生成 Cen&ButtonHandler.class.
希望大家支持下,解释下...
楼主【sure2003】截止到2008-07-14 16:52:32的历史汇总数据(不包括此帖):
发帖的总数量:237 发帖的总分数:10083 每贴平均分数:42
回帖的总数量:202 得分贴总数量:5 回帖的得分率:2%
结贴的总数量:232 结贴的总分数:9963
无满意结贴数:2 无满意结贴分:50
未结的帖子数:5 未结的总分数:120
结贴的百分比:97.89 % 结分的百分比:98.81 %
无满意结贴率:0.86 % 无满意结分率:0.50 %
值得尊敬
但是main方法无法访问它,如果只定义不使用,可以通过编译,否则根本编译不通过。
自己写程序注意这种非法的写法就是了。
把编译出错.
有这个就正确.
这是为什么?????????????????????????????????main读取这个匿名类的路线是怎么样的???
请核对论坛编号,请确定论坛存在且为”,因为新帖都不能发,所以不知道怎样问别人如何发帖子。情非得已,只好把问题附在lz的帖子下,希望lz莫要见怪。也请各位老鸟指点一下。
我的帖子是在“Java J2SE / 基础类 小论坛”上面发的。不知道为什么这个论坛发帖子怎么这么不人性化。现在很郁闷啊。
定义在了main()方法里,怎么行呢
编译就可以通过,大家试试看
port java.awt.event.*;
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("LoveLove");
}
}javac ButtonHandler
这样 和Cen.java 在同一目录下就有ButtonHandler.class
你们相信吗?这样编译会成功的.
请问为什么???
import java.awt.event.*;public class Cen {
private static Button b; private static Button c; public static void main(String args[]) {
class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("all");
if (e.getSource().equals(b))
System.out.println("b");
if (e.getSource().equals(c))
System.out.println("c");
}
}
Frame f = new Frame("Test");
b = new Button("Bc");
b.addActionListener(new ButtonHandler());
c = new Button("C");
c.addActionListener(new ButtonHandler());
f.setLayout(new FlowLayout());
f.add(b);
f.add(c);
f.setSize(200, 100);
f.setVisible(true);
}
}