1.什么是匿名内部类
首先要了解匿名内部类是局部内部类的一种,是一种需要在方法的内部创建对象并使用的
2.什么情况下可以用到匿名内部类
1.当存在一个接口或者抽象方法;
2.某个方法的参数是这个接口
//例如存在一个接口
package com.itheima.neibunei.demo06;
public interface GetToken {
public void getUserInfo();
}
public class RegistController {
//该接口的实现类作为参数
public static void getOneHealth(GetToken getToken){
getToken.getUserInfo();
}
}
3.如何使用匿名内部类
当某个方法的参数是接口时,在不用匿名内部类的方式时,我们首先对该接口进行一个实现,然后进行传参,但这种方法我们会多建一个Java类,显然匿名内部类就是简化这种方式.我们直接在使用该方法时直接对该接口进行一个实现.
public class Test {
public static void main(String[] args) {
//如果不使用匿名内部类,我们就要为这个接口写一个实现,让其作为参数,但显然新建一个Java文件要麻烦很多
//GetToken getToken = new GetTokenImpl();
//RegistController.getOneHealth(getToken);
RegistController.getOneHealth(new GetToken() {
@Override
public void getUserInfo() {
System.out.println("匿名内部类");
}
});
}
}
4.匿名内部类的优势
当项目中的一个接口已经做过了实现,现在需要你在不增加文件的情况下对该接口增加一个功能,但该功能与原有的实现功能完全不搭嘎,这是可以考虑使用匿名内部类的形式对该接口做功能增强.