java中匿名类的限制?

java中匿名类的限制?,java,class,nested,Java,Class,Nested,我在使用匿名类时遇到了很多问题,比如我不能执行instanceOf测试,也不能实现多个接口,所以有人能解释一下我在java中可以或不能使用匿名类做什么吗?匿名类在任何时候都可以工作 您永远不需要引用类本身 您只需要扩展单个类或实现单个接口 …但除此之外,实际上没有任何重大限制。这在很多情况下都可以很好地工作:例如,在许多情况下,当您定义回调、侦听器等时。匿名类在任何时候都可以工作 您永远不需要引用类本身 您只需要扩展单个类或实现单个接口 …但除此之外,实际上没有任何重大限制。这在很多情况

我在使用匿名类时遇到了很多问题,比如我不能执行instanceOf测试,也不能实现多个接口,所以有人能解释一下我在java中可以或不能使用匿名类做什么吗?

匿名类在任何时候都可以工作

  • 您永远不需要引用类本身
  • 您只需要扩展单个类或实现单个接口

…但除此之外,实际上没有任何重大限制。这在很多情况下都可以很好地工作:例如,在许多情况下,当您定义回调、侦听器等时。

匿名类在任何时候都可以工作

  • 您永远不需要引用类本身
  • 您只需要扩展单个类或实现单个接口

…但除此之外,实际上没有任何重大限制。这在很多情况下都可以很好地工作:例如,在许多情况下,当您定义回调、侦听器等时。

匿名内部类的目的是扩展和实例化现有类,或者在一个步骤中实现单个接口

它的局限性可以从上面得到:

  • 只能扩展一个非最终类或实现一个接口
  • 只能访问封闭方法的最终局部变量。(这是因为在调用内部类的任何方法时,普通局部变量将超出范围。)
  • 不能定义构造函数。(该类没有名称。)

如果需要多个接口,可以使用本地内部类,它与普通内部类类似,具有自己的名称,但在方法中定义。我必须承认,我从未见过在实践中使用它,我认为任何人都没有理由这样做,希望有人能给出一个例子。

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

它的局限性可以从上面得到:

  • 只能扩展一个非最终类或实现一个接口
  • 只能访问封闭方法的最终局部变量。(这是因为在调用内部类的任何方法时,普通局部变量将超出范围。)
  • 不能定义构造函数。(该类没有名称。)

如果需要多个接口,可以使用本地内部类,它与普通内部类类似,具有自己的名称,但在方法中定义。我必须承认,我从未在实践中使用过它,我认为任何人都没有理由这样做,希望有人能给出一个例子。

“我能或不能用嵌套类做什么”——并非所有嵌套类都是匿名的。除了您列出的两项之外,匿名类不能有构造函数。谢谢。。。。我已经修改了我的问题这个例子有什么问题:公共类nestedExample{public void outer(new innerClass(){public inner(){System.out.println(“this is inner”);}});公共静态void main(String args[]){nestedExample ex=new nestedExample();ex.outer();}“我能用嵌套类做什么,不能用嵌套类做什么”--并非所有嵌套类都是匿名的。除了您列出的两项之外,匿名类不能有构造函数。谢谢。。。。我已经修改了我的问题这个例子有什么问题:公共类nestedExample{public void outer(new innerClass(){public inner(){System.out.println(“this is inner”);}};公共静态void main(String args[]){nestedExample ex=new nestedExample();ex.outer();}