匿名类

匿名类可以让代码更加简洁,因为它允许声明的同时实例化一个类。类似于局部类,只不过他们没有名字,当只需要一次局部类时,用匿名类更简洁。

匿名类的声明

局部类的声明是类的声明,但匿名类的声明是一个表达式。下面的例子中,frenchGreetingspanishGreeting的初始化使用了匿名类,而englishGreeting的初始化使用了局部类。

public class HelloWorldAnonymousClasses {        interface HelloWorld {         public void greet();         public void greetSomeone(String someone);     }        public void sayHello() {                  class EnglishGreeting implements HelloWorld {             String name = "world";             public void greet() {                 greetSomeone("world");             }             public void greetSomeone(String someone) {                 name = someone;                 System.out.println("Hello " + name);             }         }                HelloWorld englishGreeting = new EnglishGreeting();                  HelloWorld frenchGreeting = new HelloWorld() {             String name = "tout le monde";             public void greet() {                 greetSomeone("tout le monde");             }             public void greetSomeone(String someone) {                 name = someone;                 System.out.println("Salut " + name);             }         };                  HelloWorld spanishGreeting = new HelloWorld() {             String name = "mundo";             public void greet() {                 greetSomeone("mundo");             }             public void greetSomeone(String someone) {                 name = someone;                 System.out.println("Hola, " + name);             }         };         englishGreeting.greet();         frenchGreeting.greetSomeone("Fred");         spanishGreeting.greet();     }      public static void main(String... args) {         HelloWorldAnonymousClasses myApp =             new HelloWorldAnonymousClasses();         myApp.sayHello();     }             } 

Syntax of Anonymous Classes

语法

As mentioned previously, an anonymous class is an expression. The syntax of an anonymous class expression is like the invocation of a constructor, except that there is a class definition contained in a block of code.
匿名类是一个表达式,它的语法类似于构造方法的调用,加上代码块中类的定义。

HelloWorld frenchGreeting = new HelloWorld() { 	  String name = "tout le monde"; 	  public void greet() { 	      greetSomeone("tout le monde"); 	  } 	  public void greetSomeone(String someone) { 	      name = someone; 	      System.out.println("Salut " + name); 	  } 	}; 

匿名类的定义包括:

  • new 关键字
  • 匿名类要实现的接口名或是要继承的类名
  • 跟普通类的实例化一样,要传给构造方法的参数,用圆括号包起来。如果是接口,就没有构造方法,那么就跟一对空的圆括号。
  • 类的声明体,可以有方法声明,但不能有statement,但是上面String name = "tout le monde";好像又是,此处有疑问

访问所在作用域的局部变量,声明和访问匿名类的成员

匿名类访问外部变量的规则(和局部类相同):

  • 匿名类可以访问外部类的成员(成员变量和方法)
  • 对于局部变量,只有声明成finaleffectively final时匿名类才能访问它
  • 和其他嵌套类一样,匿名类中定义的变量投影所在作用域的同名变量

匿名类定义成员的规则(和局部类相同):

  • 不能定义静态初始化块和成员接口
  • 可以有静态成员变量,只要它们是常量

能在匿名类中定义的有:

  • 字段(Fields)
  • 其他方法(即使不是父类中的)
  • 初始化代码块
  • 局部类

不能在匿名类中定义构造方法。

热门文章

动物医院部门科室是什么(动物医院诊室)

摘要: 本篇文章给大家谈谈动物医院部门科室是什么,以及动物医院诊室对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录一览:1、请问一般中小规模的宠物医院都分哪些科室,有几名..

12月2日更新22.6M/S,2024年最新高速SSR/Clash/V2ray/Shadowrocket订阅链接免费节点订阅

这一次的节点更新覆盖了韩国、欧洲、美国、香港、加拿大、日本、新加坡等地区,最高速度可达22.6 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

11月6日更新18.2M/S,2024年最新高速SSR/V2ray/Shadowrocket/Clash订阅链接免费节点订阅

这一次的节点更新覆盖了加拿大、韩国、新加坡、美国、日本、香港、欧洲等地区,最高速度可达18.2 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

10月25日更新18.5M/S,2024年最新高速V2ray/SSR/Shadowrocket/Clash订阅链接免费节点订阅

这一次的节点更新覆盖了美国、加拿大、新加坡、韩国、香港、欧洲、日本等地区,最高速度可达18.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

12月23日更新21.1M/S,2024年最新高速Shadowrocket/SSR/V2ray/Clash订阅链接免费节点地址分享

这一次的节点更新覆盖了新加坡、加拿大、香港、美国、欧洲、日本、韩国等地区,最高速度可达21.1 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

10月16日更新21M/S,2024年最新高速SSR/Clash/V2ray/Shadowrocket订阅链接免费节点订阅

这一次的节点更新覆盖了香港、日本、欧洲、新加坡、加拿大、美国、韩国等地区,最高速度可达21 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

哈尔滨农大动物医院电话号码是多少(哈尔滨农业动物医院)

摘要: 今天给各位分享哈尔滨农大动物医院电话号码是多少的知识,其中也会对哈尔滨农业动物医院进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、哈尔滨宠.

重庆宠物领养中心有哪些地址呢(重庆宠物领养重庆宠物赠送)

摘要: 今天给各位分享重庆宠物领养中心有哪些地址呢的知识,其中也会对重庆宠物领养重庆宠物赠送进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、重庆有.

1月2日更新22.2M/S,2025年最新高速Shadowrocket/SSR/Clash/V2ray订阅链接免费节点地址分享

这一次的节点更新覆盖了日本、美国、欧洲、韩国、加拿大、香港、新加坡等地区,最高速度可达22.2 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

宠物领养什么意思啊(宠物领养须知)

摘要: 今天给各位分享宠物领养什么意思啊的知识,其中也会对宠物领养须知进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、拼多多领养是什么意思啊...

归纳