Java 匿名类
# Java 匿名类
在本教程中,您将借助示例学习Java中的匿名类。
在Java中,一个类可以包含另一个称为嵌套类的类。可以在不提供任何名称的情况下创建嵌套类。
没有任何名称的嵌套类称为匿名类。
必须在另一个类中定义一个匿名类。因此,它也被称为匿名内部类。其语法为:
class outerClass {
//定义匿名类
object1 = new Type(parameterList) {
//匿名类的主体
};
}
1
2
3
4
5
6
7
2
3
4
5
6
7
匿名类通常继承子类或实现接口。
在这里,**类型(Type)**可以是
匿名类继承的超类
匿名类实现的接口
上面的代码在运行时创建了一个匿名类的对象object1。
**注意:**匿名类在表达式内定义。因此,在匿名类的末尾使用分号来表示表达式的末尾。
# 示例1:匿名内部类继承类
class Polygon {
public void display() {
System.out.println("在Polygon类内");
}
}
class AnonymousDemo {
public void createClass() {
//创建匿名类,继承类Polygon
Polygon p1 = new Polygon() {
public void display() {
System.out.println("匿名类的内部。");
}
};
p1.display();
}
}
class Main {
public static void main(String[] args) {
AnonymousDemo an = new AnonymousDemo();
an.createClass();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
输出结果
匿名类的内部。
1
在上面的示例中,我们创建了一个类Polygon。它只有一个方法display()。
然后,我们创建了一个匿名类,该类继承类Polygon并重写了display()方法。
当我们运行该程序时,将创建一个匿名类的对象p1。然后该对象调用匿名类的display()方法。
# 示例2:实现接口的匿名类
interface Polygon {
public void display();
}
class AnonymousDemo {
public void createClass() {
//匿名类实现接口
Polygon p1 = new Polygon() {
public void display() {
System.out.println("匿名类的内部。");
}
};
p1.display();
}
}
class Main {
public static void main(String[] args) {
AnonymousDemo an = new AnonymousDemo();
an.createClass();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
输出结果
匿名类的内部。
1
在上面的示例中,我们创建了一个实现该Polygon接口的匿名类。
# 匿名类的优点
在匿名类中,只要需要就创建对象。即,创建对象以执行某些特定任务。例如,
Object = new Example() {
public void display() {
System.out.println("匿名类重写display()方法。");
}
};
1
2
3
4
5
2
3
4
5
在这里,当我们需要重写display()方法时,将动态创建匿名类的对象。
匿名类也有助于我们使代码简洁。