JAVA中的匿名内部类
在java的内部类当中,匿名内部类是用的最多的,匿名内部类是java8的新特性lambda表达式的重要前提。
我们传统方式的实现接口:
1.定义一个接口
2.定义他的实现类
3.父类引用指向子类对象(多态)
如果接口的实现类(或者父类的子类)只需要使用唯一的一次。那么这种情况下就可以省略掉该类的定义,而改为使用匿名内部类。
匿名内部类的定义格式:
我们之前说过,接口不能直接new接口,这是错误写法。我们匿名内部类的格式是将接口new接口的格式稍微改了一下。
接口名称 对象名 = new 接口名称(){
//重写接口中所有抽象方法
};
我现在所选中的部分就是匿名内部类,因为这里面的内容和前面实现类里面的内容一模一样,只是他没有名字!同时它实现了这个接口。这个接口的名字是作为你重写的时候使用的。
使用匿名内部类的好处在于我们没有必要专门写这个接口的实现方法。省掉一个类的单独定义。
对格式 接口名称 对象名 = new 接口名称(){};进行解析:
1.new代表创建对象的动作
2.接口名称就是匿名内部类需要实现哪个接口
3.{…}这才是匿名内部类的内容
注意事项:
1.匿名内部类,在创建对象的时候,只能使用唯一一次。
如果希望多次创建对象,而且类的内容一样的话,那么就必须单独定义实现类了
2.匿名对象,是在调用方法的时候,只能调用唯一一次,如果希望同一个对象调用多次方法,那么必须给对象起个名字。
3.匿名内部类相当于是省略了实现类或子类名称,但是匿名对象是省略了对象名称
这种时候,里面的方法只能调用一次