求助:什么情况下使用匿名内部类?

空指针不懂404的忧伤 2012-05-09 09:38:31
求助:什么情况下使用匿名内部类?匿名内部类有什么好处?
...全文
617 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
树先生的博客 2013-08-06
  • 打赏
  • 举报
回复
1:匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句, ( new <类或接口> <类的主体> ) 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。 2.匿名内部类的注意事项 ·匿名内部类不能有构造方法。 ·匿名内部类不能定义任何静态成员、方法和类。 ·匿名内部类不能是public,protected,private,static。 ·只能创建匿名内部类的一个实例。 ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 ·内部类只能访问外部类的静态变量或静态方法。 3.匿名内部类的作用 Java的内部类和C++中的嵌套类有本质的不同:C++的嵌套类没有指向包装类的句柄。仅仅表达一个封装的概念;但是Java的内部类不同,它可以访问包装类的成员(这表示它拥有指向包装类的句柄)。
  • 打赏
  • 举报
回复
我又练习了好多例子,好像明白了!谢谢大家了哈!
allan_chan 2012-05-11
  • 打赏
  • 举报
回复
最大的好处,就是封装性。对于需要构造数据的时候,用的比较多~~~
dracularking 2012-05-11
  • 打赏
  • 举报
回复
即用即造,但无法重用
aduwu_para 2012-05-11
  • 打赏
  • 举报
回复
受Core Java作者Cay Hortsmann影响,我基本在设置
动作监听时都是用匿名内部类!
Ade子夜 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

swing,awt事件中用的比较多,以及spring框架中。灵活性比较大。省去建立一个新类。
一般都是接口,而且这样的接口方法的个数都比较少。
[/Quote]
有道理!!!
古布 2012-05-11
  • 打赏
  • 举报
回复
swing,awt事件中用的比较多,以及spring框架中。灵活性比较大。省去建立一个新类。
一般都是接口,而且这样的接口方法的个数都比较少。
tools_csnd 2012-05-11
  • 打赏
  • 举报
回复
在桌面应用开发的时候,会经常使用匿名类。
MiceRice 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
好像有一点理解了,就是不用引用,直接来对象是不是啊?
[/Quote]

没看懂。。。就是不单独写类定义,而是直接在构造对象时同步完成类定义,简单举例:
Thread t = new Thread(new Runnable() {
public void run() {
...
}
});
t.start();

这里面 new Runnable() { 这段代码,就是匿名类。
a395885670 2012-05-10
  • 打赏
  • 举报
回复
实现观察者模式的时候 经常用到内部类
  • 打赏
  • 举报
回复
好像有一点理解了,就是不用引用,直接来对象是不是啊?
beiouwolf 2012-05-10
  • 打赏
  • 举报
回复
简单来说,就是懒人专用...
个人不太喜欢匿名内部类,代码不优雅
sdwe9091 2012-05-09
  • 打赏
  • 举报
回复
啥时候方便啥时候用呗,譬如实现一个接口的时候就很常用
昨日凡阳 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
求助:什么情况下使用匿名内部类?匿名内部类有什么好处?
[/Quote]

1、内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性。
2、非静态内部类对象有着指向其外部类对象的引用
等等。
给你一个例子,看起来会非常直观。

http://www.examw.com/biancheng/java/157670/
MiceRice 2012-05-09
  • 打赏
  • 举报
回复
个人理解是:图方便的时候。

好处就是省事,你不用去完整定义一个类或者内部类。

很多东西都是为了方便你使用,而并非说绝对要这么用。
比如:while、do while、for,foreach 都是循环,只是某些场合用某种更方便。

62,635

社区成员

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

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