前言
在Java中调用某个方法时,如果该方法的参数是一个接口类型,除了可以传入一个参数接口实现类,还可以使用匿名内部类实现接口来作为该方法的参数。
匿名内部类其实就是没有名称的内部类,在调用包含有接口类型参数的方法时,通常为零简化代码,不会创建一个接口的实现类作为方法参数传入,而是直接通过匿名内部类的形式传入一个接口类型参数,在匿名内部类中直接完成方法的实现。
创建匿名内部类的基本语法格式如下:
new 父接口(){
//匿名内部类实现部分
}
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
interface Animal{
void shout();
}
public class Example21 {
public static void main(String[] args) {
String name= "小花" ;
//定义匿名内部类作为参数传递给animalShout方法
animalShout( new Animal() {
//实现shout()方法
public void shout() {
//jdk8开始,局部内部类、匿名内部类课堂访问非final的局部变量
System.out.println(name+ "喵喵。。。" );
}
});
}
//定义静态方法animalShout(),接收接口类型参数
public static void animalShout(Animal an) {
an.shout(); //调入传入对象an的shout()方法
}
}
|
注意:
在调用animalShout()方法时,在方法的参数位置上写上new Animal(){},这相当于创建了一个实例对象,并将对象作为参数传给animalShout()方法。在new Animal()后面有一对大括号表示创建的对象为Animal的子类实例,该子类是匿名的
总结
到此这篇关于Java匿名内部类的文章就介绍到这了,更多相关Java匿名内部类内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_45938466/article/details/108290353