java匿名内部类的定义以及使用场景

createh53个月前 (02-01)技术教程30

匿名内部类定义

匿名内部类是Java中一种没有显式声明名称的内部类。它们在创建时被同时声明和实例化,通常用于创建一次性使用的类。它们的特点是:

  • 无名称: 无法像普通类一样被其他代码引用。
  • 一次性: 通常只在创建它们的代码块中使用。
  • 继承或实现: 必须继承一个父类或者实现一个接口。
  • 访问外部类成员: 可以访问其所在外部类的成员,包括私有成员, final 限制: 匿名内部类只能访问外部类的 final 变量或 effectively final 变量(Java 8 及以上版本)。

语法:

new 父类或接口() {
    // 类的主体,包含方法、变量等
}

使用场景

1、事件处理: 这是匿名内部类最常见的应用场景。例如,为按钮点击事件创建事件监听器

JButton button = new JButton("点击我");
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点击!");
    }
});

2、线程创建: 快速创建并启动一个线程

new Thread() {
    @Override
    public void run() {
        System.out.println("新线程正在运行");
    }
}.start();

3、回调函数: 将匿名内部类作为回调函数传递给方法

someMethod(new Callback() {
    @Override
    public void execute() {
        System.out.println("回调函数被执行");
    }
});

匿名内部类提供了一种简洁的方式来创建一次性使用的类,尤其适用于事件处理、线程创建和回调函数等场景。

需要注意的是,由于匿名内部类缺乏名称,因此难以被其他代码复用,也可能导致代码可读性降低,尤其是在逻辑复杂的情况下。

相关文章

Java:在Java中使用私有接口方法(java私有的)

  接口是定义一组方法及其签名的契约, 它可以由任何类及其在该类中实现的方法进行扩展。从Java9 开始,你可以在接口中使用私有方法。  由于私有方法只能在定义它的接口内访问,因此你可以利用这些方法编...

Python之面向对象:私有属性是掩耳盗铃还是恰到好处

引言声明,今天的文章中没有一行Python代码,更多的是对编程语言设计理念的思考。上一篇文章中介绍了关于Python面向对象封装特性的私有属性的相关内容,提到了Python中关于私有属性的实现是通过“...

内部类Java(内部类定义)

概念将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。什么时候使用内部类一个事物内部还有一个独立的事物,内部的事物脱离外部的事物无法独立使用比如汽车只有一个发动机,电脑只有一...

java 核心技术-12版 卷Ⅰ- 6.1.4 静态和私有方法

原文6.1.4 静态和私有方法在 Java 8 中,允许在接口中增加静态方法。理论上讲,没有任何理由认为这是不合法的。只是这似乎有违于将接口作为抽象规范的初衷。目前为止,通常的做法都是将静态方法放在伴...

Java设计模式-单例模式(java单例模式原理)

单例模式定义:它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式主要分为两大类:饿汉式和懒汉式,懒汉式又分为 单线程下的普通懒汉式,多线程下的双重校验锁、静态内部类、枚举。单例模式的...