2012-02-20 57 views
1

我一直在面对如此多的问题,使用匿名类就像我不能执行instanceOf测试我既不能实现多个接口,所以有人请解释我可以或不能用java中的匿名类来做什么?在java中的匿名类的限制?

+1

“我能或不能用嵌套类做什么” - 并非所有*嵌套*类都是*匿名*。 – dasblinkenlight 2012-02-20 22:02:53

+0

除了列出的两项外,匿名类不能有构造函数。 – dasblinkenlight 2012-02-20 22:06:03

+0

谢谢....我已经修改了我的问题 – Mike 2012-02-20 22:06:41

回答

2

匿名内部类的目的是扩展和实例化一个现有的类或实现一个单一的接口。

其局限性可以从上面导出:

  • 只有一个非最终类可以扩展或一个接口实现。
  • 只能访问封闭方法的最终局部变量。 (这是由于在调用内部类的任何方法时正常局部变量将超出范围)
  • 您无法定义构造函数。 (类没有名字。)

如果需要多个接口,可以使用局部内部类,它是像一个正常的内部类,有自己的名称,但在方法中定义。我不得不承认,我从来没有见过它在实践中使用过,我认为没有人愿意这样做,希望有人会拿出一个例子。

4

匿名类工作时

  • 你永远需要参考类本身
  • 你只需要扩展一个类或实现一个接口

...但其他比没有任何重大限制。这在很多情况下都可以正常工作:例如,在定义回调函数,侦听器等时的很多情况。