江明涛的博客
匿名内部类的特性与用法
匿名内部类的特性与用法

匿名内部类的特性与用法

匿名内部类的特性与用法

匿名内部类是Java中一种特殊的类,可以在声明和实例化的同时使用,,不需要单独命名。它的使用场景主要是在创建只需要使用一次的类的实例时。下面将介绍匿名内部类的一些特性和常见的用法。

特性:

  • 没有类名: 匿名内部类没有类名,可以在声明和实例化时直接使用。
  • 继承父类或实现接口:匿名内部类可以继承父类或实现接口,可以重写父类的方法,实现自己的逻辑。
  • 局部有效:匿名内部类的作用域限定在声明它的方法或代码块内部,超出这个范围就无法使用。
  • 可以捕获外部类的变量:匿名内部类可以访问和使用外部类的成员变量和方法,但要求外部类的变量是final或是等同于final效果的。

用法:

1. 在线程中使用匿名内部类:

        
Thread thread = new Thread(new Runnable() {
    public void run() {
        // 线程执行的代码逻辑
    }
});
thread.start();
        
    

2. 在事件监听中使用匿名内部类:

        
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // 按钮点击事件的处理逻辑
    }
});
        
    

3. 在集合中使用匿名内部类:

        
List<String> names = new ArrayList<>() {
    {
        add("Alice");
        add("Bob");
    }
};
        
    

这里创建了一个ArrayList的匿名子类,并在实例化时添加了”Alice”和”Bob”两个元素。

通过上面的介绍,我们可以看到匿名内部类在某些场景下非常方便,可以简化代码的编写。但是它也有一些限制,比如只能继承一个类或实现一个接口,无法继承和实现多个,且匿名内部类无法被其他类继承或重用。