关于getClass()方法的问题

xiayunfei148 2006-04-17 10:27:04
class A{}
class B {
public static void main(String s[]){
Class cl=new A(){}.getClass();
System.out.println(cl.getName());
}
}
在B中创建了一个匿名内部类,他继承A,为什么结果是B?
class A{}
class B {
public static void main(String s[]){
Class cl=new A().getClass();
System.out.println(cl.getName());
}
}
结果是A,这个能理解
谁给解释一下,
...全文
401 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2006-04-20
  • 打赏
  • 举报
回复
OH~
xxedge 2006-04-19
  • 打赏
  • 举报
回复
Class cl=new A(){}.getClass();
和Class cl=new A().getClass();的区别在于后面增加了{}

在编译过程中,可以在{}中增加新的函数或重载已有的接口,所以
在new A() {} 的时候生成的类并不是A,而应该认为是对A作了扩展的
匿名子类,所以使用getClass()时输出为B$1
在awt/swing事件处理中常用到类似的写法

而使用new A()时生成的确实是A,所以会输出A.

cleansunshing 2006-04-19
  • 打赏
  • 举报
回复
java里面内部类的标识都是这样子的,如果是B类中的内部类,那么会用“B$”加上内部类的类名来标识,例如B类中有内部类A那么就用B$A来表示该内部类,如果内部类是匿名的那么就会用B$1,B$2...来表示第一个匿名内部类,第二个匿名内部类...
cuiyingfeng 2006-04-19
  • 打赏
  • 举报
回复
mark
lgh2008 2006-04-19
  • 打赏
  • 举报
回复
mark
Rico_Liu 2006-04-19
  • 打赏
  • 举报
回复
是啊,为什么不是A
chaomenren 2006-04-19
  • 打赏
  • 举报
回复
我运行了,说的非常有道理
孟俊 2006-04-19
  • 打赏
  • 举报
回复
楼上的说的完全正确
grant999 2006-04-18
  • 打赏
  • 举报
回复
学习啊
xiayunfei148 2006-04-18
  • 打赏
  • 举报
回复
dbyang()的解释对,我是想知道
看getClass()解释
class A{}
class B {
public static void main(String s[]){
Class cl=new A(){}.getClass();
System.out.println(cl.getName());
}
}
的结果我决的应该是A
谁能解释一下原理吗,谢谢!!
xiayunfei148 2006-04-18
  • 打赏
  • 举报
回复
楼上的我明白,我说内部类那个,
dztc 2006-04-18
  • 打赏
  • 举报
回复
class A{}
class B {
public static void main(String s[]){
Class cl=new A().getClass(); //这样就A了。
System.out.println(cl.getName());
}
}
熊云昆 2006-04-17
  • 打赏
  • 举报
回复
同意!
tomison 2006-04-17
  • 打赏
  • 举报
回复
dbyang() ( ) 信誉:100
解释得完全正确
cheng_young 2006-04-17
  • 打赏
  • 举报
回复
你确认你运行的就是B.class?
直接在命令行运行 java B 试试
dbyang 2006-04-17
  • 打赏
  • 举报
回复
第一个的结果并不是B,而是B$1,如果你再写一个
Class c2=new A(){}.getClass();
System.out.println(c2.getName());
则输出为B$2。

再进一步,你再一模仿A写一个class C,执行同样的操作,会得到B$3。

我觉得可能后面“$”可能是用来标记内部类,1、2,3则表示的是第几个内部类。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧