1. new Cen().new ButtonHandler()
是不是Cen类的对象.ButtonHandler类的对象??
2. new Cen.ButtonHandler()是不是 生成一个 Cen.ButtonHandler()的对象.
还是 Cen类对象的ButtonHandler();
??
是不是Cen类的对象.ButtonHandler类的对象??
2. new Cen.ButtonHandler()是不是 生成一个 Cen.ButtonHandler()的对象.
还是 Cen类对象的ButtonHandler();
??
楼主【sure2003】截止到2008-07-15 22:51:38的历史汇总数据(不包括此帖):
发帖的总数量:242 发帖的总分数:10263 每贴平均分数:42
回帖的总数量:208 得分贴总数量:6 回帖的得分率:2%
结贴的总数量:240 结贴的总分数:10203
无满意结贴数:2 无满意结贴分:50
未结的帖子数:2 未结的总分数:60
结贴的百分比:99.17 % 结分的百分比:99.42 %
无满意结贴率:0.83 % 无满意结分率:0.49 %
值得尊敬
所以理解为构造一个 Cen.ButtonHandler对象
new 和 "." 不是运算符你那是在声明内部类的对象。
2. "."在这里只是起限定作用,因为是创建这个类的内部类的对象,所以new 操作的目标是内部类。感觉不需要跟优先级扯上什么关系。
new 和 delete 在C++里就有优先级的....
new Test().test();
} public void test() {
Test1.Test2 t1=new Test1().new Test2();
// Test1.Test2 t2=new Test1.Test2();
}
}class Test1 { class Test2 { public void test2() {
System.out.println("Test2:test2");
}
} public void test1() {
System.out.println("Test1:test1");
}
}看看这个简单的例子,分析一下它的指令就能看的出来:Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: returnpublic static void main(java.lang.String[]);
Code:
0: new #2; //class Test
3: dup
4: invokespecial #3; //Method "<init>":()V
7: invokevirtual #4; //Method test:()V
10: returnpublic void test();
Code:
0: new #5; //class Test1$Test2
3: dup
4: new #6; //class Test1
7: dup
8: invokespecial #7; //Method Test1."<init>":()V
11: dup
12: invokevirtual #8; //Method java/lang/Object.getClass:()Ljava/lang/Class;
15: pop
16: invokespecial #9; //Method Test1$Test2."<init>":(LTest1;)V
19: astore_1
20: return}看第标号8:-16:
先构造Test1类的对象,然后构造Test1.Test2类的对象.
不知道lz想得到什么信息.
如果自己好奇,可以参考<深入java虚拟机>,不明白的地方就对class文件进行反编译,得到其虚拟机指令集来分析其实质.
class Test
{
public static void main(String args[])
{
Button c = new Button( );
c.addActionListener(new Cen( ).new ButtonHandler( ));
}}class Cen
{
Cen()
{
System.out.println("Cen");
}
class ButtonHandler implements ActionListener
{
ButtonHandler()
{
System.out.println("ButtonHandler");
}
public void actionPerformed(ActionEvent e)
{ }
}
}
//楼主要的是这个意思吧 已加了构造函数 看看输出结果
class Test
{
public static void main(String args[])
{
Button c = new Button( );
c.addActionListener(new Cen.ButtonHandler( ));
}
}class Cen
{
Cen()
{
System.out.println("Cen");
}
static class ButtonHandler implements ActionListener
{
ButtonHandler()
{
System.out.println("ButtonHandler");
}
public void actionPerformed(ActionEvent e)
{ }
}
}//再运行下这个 这次ButtonHandler 是静态内部类
老竹...大侠等
是从左到右还是从右到左。
.是用来发送消息的。比如 类.方法
一个类向一个方法发送消息,要它执行特定的任务