匿名内部类的用法和例子
时间: 2023-08-09 14:06:09 浏览: 50
匿名内部类是Java语言中的一个特殊语法结构,可以用来创建一个继承或实现某个类或接口的匿名类,并在创建对象的同时对其进行赋值和初始化。匿名内部类通常用于简化代码,特别是在创建事件监听器、线程、适配器等对象时非常有用。
下面是一个匿名内部类的例子,用于创建一个Runnable对象:
```
public class Test {
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello, world!");
}
});
t.start();
}
}
```
这段代码中,我们创建了一个Thread对象,并将一个匿名内部类作为它的构造函数参数传入。这个匿名内部类实现了Runnable接口,并重写了其run方法,用于指定线程要执行的任务。在匿名内部类的run方法中,我们打印了一句"Hello, world!"。
通过使用匿名内部类,我们可以非常方便地实现一个Runnable接口,并将其传递给Thread对象,从而创建一个新线程并启动它。
需要注意的是,在匿名内部类中只能访问final或effectively final的局部变量,因为匿名内部类在编译时会将这些变量传递给其构造函数,并将它们存储在内部类的成员变量中。如果这些变量不是final或effectively final的,它们的值可能会在内部类中被修改,这会导致不可预期的结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)