new <类或接口>() { // 类的主体 };这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。
public class Out { void show() { System.out.println("调用 Out 类的 show() 方法"); } } public class TestAnonymousInterClass { // 在这个方法中构造一个匿名内部类 private void show() { Out anonyInter = new Out() { // 获取匿名内部类的实例 void show() { System.out.println("调用匿名类中的 show() 方法"); } }; anonyInter.show(); } public static void main(String[] args) { TestAnonymousInterClass test = new TestAnonymousInterClass(); test.show(); } }程序的输出结果如下:
调用匿名类中的 show() 方法从输出结果可以看出,匿名内部类有自己的实现。
public static void main(String[] args) { int a = 10; final int b = 10; Out anonyInter = new Out() { void show() { // System.out.println("调用了匿名类的 show() 方法"+a); // 编译出错 System.out.println("调用了匿名类的 show() 方法"+b); // 编译通过 } }; anonyInter.show(); }2)匿名类中允许使用非静态代码块进行成员初始化操作。
Out anonyInter = new Out() { int i; { // 非静态代码块 i = 10; //成员初始化 } public void show() { System.out.println("调用了匿名类的 show() 方法"+i); } };3)匿名类的非静态代码块会在父类的构造方法之后被执行。
本文链接:http://task.lmcjl.com/news/10675.html