【Java】内部类【主线学习笔记】

LVGL按键触发回调函数的完整流程 如果是我的话我会怎么写:例如按键,我先定义一个结构体里面包含ID,事件名等和回调函数的链表节点结构体里面有具体函数的指针,也有指向下一个回调函数的链表节点的指针,初始化一个结构体变量的,通过BSP层来驱动触摸屏幕,再通过中间层与被按下时就会判断是长按还是短按还是其他,改变变量的事件例如:改成长按,生成事件包后再注册你长按的回调函数链表节点,再根据变量的事件到链表中遍历最后实现功能.父容器监听所有子列表项的点击事件,无需为每个列表项单独注册回调。的回调,打印所有事件日志,观察事件触发顺序。 阅读详情


前言

Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。


内部类

在Java中,将一个类A定义在另一个类B的里面,里面那个类A就称为内部类,类B则称为外部类。
当一类事务A的内部,还有一个部分需要一个完整的结构B进行描述,而这个内部的完整的结构B又只为外部事物A提供服务,不在其他地方单独使用,那么这个内部的完整结构B最好使用内部类。遵循高内聚,低耦合的面向对象开发原则。

内部类的使用举例

Thread类内部声明了state类,表示线程的生命周期。
HashMap类中声明了Node类,表示封装的key和value.

内部类的分类

  • 成员内部类:直接声明在外部类的里面。其中有可以根据是否被static修饰而分为静态的成员内部类和非静态的成员内部类。

  • 局部内部类:声明在方法内、构造器内、代码块内。其中又可以分为匿名的局部内部类和非匿名的局部内部类。

成员内部类:

class OuterClass {
    private String outerField = "Outer field";

    // 非静态成员内部类
    class InnerClass {
        void display() {
            System.out.println("Accessing from InnerClass: " + outerField);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建外部类对象
        OuterClass outer = new OuterClass();
        // 通过外部类对象创建内部类对象
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.display();  // 输出: Accessing from InnerClass: Outer field
    }
}

静态成员内部类:

class OuterClass {
    private static String staticOuterField = "Static Outer field";

    // 静态成员内部类
    static class StaticInnerClass {
        void display() {
            System.out.println("Accessing from StaticInnerClass: " + staticOuterField);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建静态内部类对象,不需要外部类实例
        OuterClass.StaticInnerClass staticInner = new OuterClass.StaticInnerClass();//直接声明内部静态 类
        staticInner.display();  // 输出: Accessing from StaticInnerClass: Static Outer field
    }
}

局部内部类:

class OuterClass {
    void outerMethod() {
        // 定义局部内部类
        class LocalInnerClass {
            void display() {
                System.out.println("This is a local inner class.");
            }
        }
        // 使用局部内部类
        LocalInnerClass localInner = new LocalInnerClass();
        localInner.display();
    }
}

public class Main {
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.outerMethod();  // 输出: This is a local inner class.
    }
}

匿名局部内部类:

public class OuterClassTest {
    
    //开发中常见情况
    //Comparable是一个接口
    //方式1:提供了接口的实现类的对象
    public Comparable getInstance1(){

        //提供了实现了comparable接口的类
        class myCompare implements Comparable{

            @Override
            public int compareTo(Object o) {
                return 0;
            }
        }
        myCompare c = new myCompare();
        return c;
    }
    
    //方式2:提供了接口的实现类的匿名对象
    public Comparable getInstance2(){

        //提供了实现了comparable接口的类
        class myCompare implements Comparable{

            @Override
            public int compareTo(Object o) {
                return 0;
            }
        }
        return new myCompare();
    }
    
    //方式3:提供了接口的匿名实现类的对象
    public Comparable getInstance3(){
        Comparable c = new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        };
        return c;
    }

    //方式4:提供了接口的匿名实现类的匿名对象
    public Comparable getInstance4(){
        return new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        };
    }
    
}

对于成员内部类的理解

从类的角度:可以声明属性、方法、构造器、内部类、代码块等结构;可以声明父类,可以实现接口;可以使用final修饰;可以使用abstract修饰;
从外部类的角度看:在内部可以调用外部类的结构,如属性、方法等;除了使用public、缺省外,还可以用private、protected修饰


【Flink】FlinkSQL如何触发执行计算 Table (通过 StatementSet.addInsert() 输出给某个 Sink)和 INSERT 语句 (通过调用 StatementSet.addInsertSql())会先被缓存到 StatementSet 中,StatementSet.execute() 方法被调用时,所有的 sink 会被优化成一张有向无环图。该方法是用来将一个表的内容插入到目标表中,一旦该方法被调用, TABLE API 程序立即被翻译。该方法是用来执行一个 SQL 语句,一旦该方法被调用, SQL 语句立即被翻译。 阅读详情

相关推荐

神经网络:初学者指南(专业版)

神经网络是一种受生物大脑启发的计算模型,由多层互连的人工神经元组成。本文从生物神经元结构出发,介绍了感知器模型、激活函数、网络架构(输入/隐藏/输出层)等基础概念,并详细阐述了前向传播、反向传播、损失函数和优化器等核心训练机制。同时涵盖了CNN、RNN等常见架构,以及过拟合、梯度消失等关键挑战,最后概述了神经网络在计算机视觉、NLP等领域的广泛应用。全文系统性地梳理了神经网络的基础理论和实践要点,为初学者提供了清晰的学习路径。

weixin_42107409的博客 1782

JAVA主线程

Java主线程 当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面: 它是产生其他子线程的线程; 通常它必须最后完成执行,因为它执行各种关闭动作。 尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个

你只管努力, 4229

从零到一:移远EC200UCN_LA OpenCPU开发中的‘避坑’实战指南

本文详细介绍了移远EC200UCN_LA 4G通信模块的OpenCPU开发实战指南,涵盖开发环境搭建、项目构建、通信接口开发、调试技巧及固件升级等关键环节。通过避坑经验和实用技巧,帮助开发者高效完成二次开发,提升4G通信模块的应用开发效率。

weixin_29159711的博客 505

Java主线程

当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:· 它是产生其他子线程的线程;· 通常它必须最后完成执行,因为它执行各种关闭动作。尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个引用,currentThread()是...

慧心的眼眸的博客 4147

Figure 03人形机器人与Helix端到端控制系统:具身智能突破深度解析

2026年5月,Figure AI的Figure 03人形机器人在一场震撼业界的直播中完成了长达200小时的连续全自动作业,分拣近25万个包裹,零故障。这一里程碑式的成就标志着人形机器人正式从「实验室展示」迈入「规模化商用」阶段。本文深入剖析Figure 03的核心技术——Helix端到端神经网络控制系统,包括System 0/1/2三层架构、视觉运动策略、全身协同控制等关键技术,并提供完整的Python/Go代码示例,帮助开发者理解具身智能的核心原理与实现路径。关键词。

shao.bing的专栏 992

小米手机安装Burp证书失败原因与DER格式改造指南

CA证书是HTTPS抓包和移动安全测试的基础组件,其本质是遵循X.509标准的数字凭证,依赖ASN.1/DER编码格式与完整证书链实现可信验证。Android系统默认支持PEM和DER两种编码,但MIUI自14版本起强化安全策略,仅识别DER二进制格式,并强制校验Subject Alternative Name(SAN)、Basic Constraints及证书链完整性。这种企业级加固逻辑导致Burp Suite导出的PEM格式.cer文件在小米设备上‘安装成功但无效’。本文聚焦证书格式转换、SAN字段注入

weixin_33646989的博客 625

Java中的主线程

文章目录概览主线程怎么来控制主线程主线程和main()函数的关系主线程中的死锁(单个线程) 概览 前段时间有同事提到了主线程这个名词,但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程。当时感觉这个描述很奇怪,所以就来研究下这个主线程的确切语义。 Java提供了内置的多线程编程支持,多线程包括两个或多个可并发执行的部分,每一部分叫做线程,每个线程定义了单独的执行部分。 主线程 当一个Java程序启动的时候,会有一个线程立即开始运行,这个线程通常被我们叫做程序中的主线程,因为它是在我

靖哥哥的博客 1266

告别第三方控件!C#实现OPC UA客户端,对接工业设备超简单

C#实现OPC UA客户端无需依赖第三方商业控件,通过快速起步:通过NuGet安装,使用模拟器完成前期开发测试;复用性强:封装通用工具类,支持连接、读写、订阅等核心功能,可直接集成到各类上位机项目;界面友好:通过WinForm绑定工具类,实现可视化操作,适配工业现场人员使用;工业适配:支持安全配置、身份验证,联调步骤清晰,可快速对接西门子、欧姆龙等主流工业设备;稳定性高:具备资源释放、异常处理、线程安全UI更新等特性,满足工业7×24小时运行要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1362

在主线程执行_Java中的主线程

概览前段时间有同事提到了主线程这个名词,但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程。当时感觉这个描述很奇怪,所以就来研究下这个主线程的确切语义。Java提供了内置的多线程编程支持,多线程包括两个或多个可并发执行的部分,每一部分叫做线程,每个线程定义了单独的执行部分。主线程当一个Java程序启动的时候,会有一个线程立即开始运行,这个线程通常被我们叫做程序中的主线程,...

weixin_39801475的博客 657

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 805

[明道云] -基础教学5- 明道云 40 种控件详解与场景解析

明道云工作表提供40种业务控件,涵盖文本、数值、关联、公式等类型,支持各类业务场景。文本类支持多行输入、正则校验;数值/金额类提供进度条、百分比显示等功能;关联类实现多表数据引用;公式/函数类支持复杂逻辑运算;自动化类包括打印模板、API调用等控件。合理使用这些控件可提升数据收集质量和自动化效率,同时需注意控件联动的性能影响和权限配置。关键控件包括关联记录、级联选择、公式计算等,适用于订单管理、客户信息关联等业务场景。

每日出拳老爷子的博客 8541

java 主线程_Java中的主线程

概览前段时间有同事提到了主线程这个名词,但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程。当时感觉这个描述很奇怪,所以就来研究下这个主线程的确切语义。Java提供了内置的多线程编程支持,多线程包括两个或多个可并发执行的部分,每一部分叫做线程,每个线程定义了单独的执行部分。主线程当一个Java程序启动的时候,会有一个线程立即开始运行,这个线程通常被我们叫做程序中的主线程,...

weixin_39517859的博客 581

20、七鳃鳗繁殖与早期生活史:从水质到养殖的全面解析

本文全面解析了七鳃鳗的繁殖与早期生活史,重点探讨了水质对幼体生存的影响、养殖密度与生长关系、变态过程的时间与大小特征,以及人工繁殖在濒危物种恢复和入侵物种控制中的应用。同时,文章分析了大规模养殖面临的挖掘基质需求、空间限制、清洁管理、疾病防控及微生物环境等挑战,并强调实验室养殖对科学研究和种群管理的重要意义。随着技术进步,未来有望扩展更多物种的繁殖研究,揭示七鳃鳗生物学的进化奥秘,实现资源的可持续利用。

l6m7n8的博客 116

Java 程序中主线程是什么

主线程(Main Thread)是程序启动时,由操作系统自动创建并且默认执行的线程。它是程序中第一个被创建并执行的线程,负责启动程序并通常用于管理程序的主要流程。所有 Java 程序在启动时都会有一个主线程,除非显式地创建新的线程。

weixin_44594317的博客 1026

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java 主线程_java主线程是什么

java主线程是什么java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面是小编为大家搜索整理的java主线程是什么,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!需要弄清的问题如同程序和进程的区别,要掌握多线程编程,第一要弄清的问题是:...

weixin_39865866的博客 571

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java主线程等待子线程、线程池

public class TestThread extends Thread { public void run() { System.out.println(this.getName() + "子线程开始"); try { // 子线程休眠五秒 Thread.sleep(5000); } catch (InterruptedException e) {

叉叉哥的BLOG 4万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

什么是java 主线程_什么是java主线程

什么是java主线程java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面是小编为大家搜索整理的java主线程是什么,希望能给大家带来帮助!更多精彩内容请及时关注我们考试网!需要弄清的问题如同程序和进程的区别,要掌握多线程编程,第一要弄清的问题是:线程对象和...

weixin_34440860的博客 337

java主线程结束和子线程结束之间的关系

最近在和同事讨论java主线程和子线程之间的关系,自己也到网上搜索了下,发现各种答案都有,有些还是互相矛盾的。经过测试自己得出以下几个结论,跟大家分享下,如果有错误,欢迎大牛指正,帮助我这只小菜鸟。废话不多说,直接上结论: (一)Main线程是个非守护线程,不能设置成守护线程。               这是因为,main线程是由java虚拟机在启动的时候创建的。main方法开始执行的时候,

aty 2万+

【Java】注解【主线学习笔记】

注解;Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。元注解就是对现有的解释进行解释说明的注解。使用@interface关键字来定义注解。可以指定一些元注解(如@Target和@Retention)来控制注解的使用范围和生命周期。可以在类或方法上使用自定义注解。

CBCY_csdn的博客 1030

java什么是主线程_java主线程是什么

java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面是小编为大家搜索整理的java主线程是什么,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!需要弄清的问题如同程序和进程的区别,要掌握多线程编程,第一要弄清的问题是:线程对象和线程的区别...

weixin_39665762的博客 351

java内部类引用外部变量

今天学习AQS时,发现在main方法中实例一个ReentrantLock,在线程内部类能够直接使用,当时就很奇怪,因为按照自己的理解,想要使用外部的变量,一般都是通过类的方法传递。 后来查了下资料,方法中的内部类是可以直接使用外部变量的。 但是有个前提就是该变量必须是final或者effectively final的。 effectively final就是指变量初始化后没有被更改。 对于基础数据类型,就是值不能被更改。 对于引用类型,就是指向不能更改。 也就是说我们可以在内部类直接使用lock,但是不能更

codecuter的博客 2608

java 主线程与子线程

在JAVA的main函数中,开启一个子线程时,主线程会执行下去,不会等待子线程执行,但是只有子线程执行完毕后,JVM才退出。 ==调用 join 方法,可以使主线程等待 子线程运行完毕之后再执行 == public class ThreadTest { static public int a = 0; //定义一个静态变量 public static void main(Str...

water drop的博客 2207

java中如何从主线程传参数到子线程

下面这个例子和上面一样,除了说是子线程要join主线程。本例中还教会了大家,如何从主线程传参数到子线程。 例:1.5.3_2 class ThreadMark_to_win extends Thread { Thread mainT; Test t; public void run() { try { mainT.join(); ...

mark_to_win的专栏 3303

java应用的主线程_Java主线程

当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作。尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个引用,currentThread()是Thre...

weixin_39781209的博客 287

为什么Android主线程与java主线程不同,不会退出?

Q:为什么Android主线程不会像普通Java程序那样执行完就退出?A:Android主线程不会自动退出的核心原因是其事件驱动架构和消息循环机制1. 事件驱动模型Android应用需要持续响应系统事件(如Activity生命周期回调、用户输入、系统广播等),主线程必须保持活跃等待事件。2. Looper消息循环主线程启动时通过// 无限循环在此发生该循环持续从中取出消息当队列空时,主线程在中阻塞等待(不消耗CPU)3. 消息持续注入发送生命周期事件分发用户输入Handler。

qq_45906596的博客 968

java 主线程_Java主线程

当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作。尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个引用,currentThread()是Thre...

weixin_42516490的博客 318
上一篇: 【论文翻译】AFLGuard: Byzantine-robust Asynchronous Federated Learning
下一篇: 【Java】枚举类【主线学习笔记】
虫本初阳
博客等级 码龄6年 746粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫本初阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值