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

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

匿名内部类定义

匿名内部类是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("回调函数被执行");
    }
});

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

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

相关文章

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

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

Java基础——面试官:你来说说反射如何获取私有对象的属性和方法

最近,@Python大星 的朋友小鹿参加了一场#Java#面试。有一道题是这样的 >>>【面试官问:你来说说反射如何获取私有对象的属性和方法?】问题的答案我们文章中揭晓,先看下反射的...

思考:Java对象之生(java中对象的概念的理解)

内存、性能是程序永恒的话题,实际开发中关于卡顿、OOM也经常是打不完的两只老虎,关于卡顿、OOM的定位方法和工具比较多,这篇文章也不打算赘述了,本章主要是来整理一下JVM的内存模型以及Java对象的生...

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

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

用GitHub创建自己的Maven私有仓库

【Github上创建仓库】首先,在GitHub上创建自己的仓库(mvn-repo):【配置本地setting文件】找到本地的maven settings文件,配置server:有两种选择,可以选择配置...

做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧

大家好,我是冰河~~最近不少小伙伴想在自己公司的内网搭建一套Maven私服环境,可自己搭建的过程中,或多过少的总会出现一些问题,问我可不可以出一篇如何搭建Maven私服的文章。这不,就有了这篇文章嘛。...