内部类学习(三)--局部内部类(Local Inner Classes)

MAML++:面向工业落地的鲁棒元学习微调框架 元学习(Meta-Learning)旨在让模型具备快速适应新任务的能力,其核心原理是通过多任务分布上的双层优化,习得可高效微调的初始参数。然而原始MAML因内循环梯度不稳定、任务异质性忽略、外循环优化器不匹配及任务表征缺失等问题,在真实小样本场景中泛化弱、收敛慢、部署难。MAML++并非理论重构,而是聚焦工程鲁棒性的三层增强:学习型内循环学习率(LILR)、任务感知外循环优化器切换、多尺度可导内循环展开,显著提升训练稳定性与跨域迁移能力。该框架已在医疗影像分割、工业缺陷检测、金融时序异常识别等典型小样本业务 阅读详情

这里我们介绍一种特殊的内部类:局部内部类(Local Inner Classes)。

在前面的例子中,我们可以发现TimerPrinter仅在start方法中创建一个新的对象时出现过一次,其它地方都没再用到过,这个情况下我们可以把TimerPrinter就定义在start方法中,如下面代码所示:

public void start(){

              class TimerPrinter implements ActionListener{

                     //private boolean beep;

                     public void actionPerformed(ActionEvent e){

                            System.out.println("Bigface,would you be my boy?");

                            if(beep) Toolkit.getDefaultToolkit().beep();

                     }

              }

              TimerPrinter action=new TimerPrinter();

              Timer t=new Timer(interval,action);

              t.start();

       }

注意,局部内部类不需要任何access modifier,否则编译出错,它的作用域一般都被限制在它所在的block中。此时,编译会产生一个名字叫Court$1TimerPrinter的class文件。局部内部类有如下两个优点:

1.  它对外面的所有类来说都是隐藏的,即时是它所属的外部类,仅有它所在的方法知道它;

2.  它不仅可以访问它所属外部类中的数据,还可以访问局部变量,不过局部变量必须生命为final类型,看下面的例子:

package cn.edu.hust.cm.test;

 

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.Toolkit;

 

import javax.swing.JOptionPane;

import javax.swing.Timer;

public class InnerClassTest {

       public InnerClassTest() {

              super();

       }

       public static void main(String[] args) {

        Court court=new Court();

        court.start(5000,true);

        JOptionPane.showMessageDialog(null,"停止么,CMTobby?");

       }

}

 

class Court{

       public void start(int interval,final boolean beep){

              class TimerPrinter implements ActionListener{

                     public void actionPerformed(ActionEvent e){

                            System.out.println("Cindyelf,are you crazy?");

                            if(beep) Toolkit.getDefaultToolkit().beep();

                     }

              }

              TimerPrinter action=new TimerPrinter();//编译器会自动更改

              Timer t=new Timer(interval,action);

              t.start();

       }

}

注意,局部内部类所要访问的局部变量必须声明为final类型,如上例中红色粗体部分。那么局部内部类是如何访问这个局部变量的呢?我们再对Court$1TimerPrinter反射一下,会得到如下的输出:

class cn.edu.hust.cm.test.Court$1TimerPrinter

{

cn.edu.hust.cm.test.Court$1TimerPrinter(cn.edu.hust.cm.test.Court, boolean);

public  void  actionPerformed(java.awt.event.ActionEvent);

final  cn.edu.hust.cm.test.Court  this$0;

private final  boolean  val$beep;

}

编译器又给我们增加了一个域val$beep,同时构造方法增加了一个boolean类型的参数,因此我们猜想如下的实现过程:

TimerPrinter action=new TimerPrinter(this,beep);//编译器自动增加

然后构造方法中会有:val$beep=beep;这样就成功的把局部变量的值复制过来了。局部变量必须为final就是为了保证成功的复制值,因为final类型的变量一经赋值就不能再发生变化了。

               

 
PyTorch手把手实现MAML元学习:让模型学会快速适应新任务 元学习(Meta-Learning)是一种使模型具备‘学会学习’能力的前沿范式,其核心在于训练模型在少量样本下快速泛化到新任务。基于优化的元学习(Optimization-based Meta-Learning)通过构建任务分布与内外梯度更新机制,使初始参数具备跨任务可微调性;MAML(Model-Agnostic Meta-Learning)作为该范式的标杆方法,以端到端可导、模型无关、小样本高效为技术价值,广泛应用于工业质检、医疗影像、边缘智能等数据稀缺场景。本文以MNIST为元学习沙盒,结合PyTor 阅读详情

相关推荐

Cursor Agent模式下如何优雅切换conda环境运行Python脚本?3种实用方法实测

本文针对Cursor Agent模式下运行Python脚本时环境错配的痛点,实测了三种优雅切换conda环境的实用方法。通过Shell全局配置、项目级.cursorrc文件定制以及对话中直接指令,开发者可以确保AI助手在正确的虚拟环境中执行代码,从而提升开发效率和协作流畅度。

redis7keeper的博客 598

局部内部类(内部类) - Java

内部类的 1)局部内部类

yavlgloss的博客 767

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 335

java中什么是局部内部类Local inner class?

5.局部内部类Local inner class 什么叫局部内部类?内部类声明位置:1.它的外部类的范围之内。2.在几个程序块的范围之内。例如,由方法定义的块中或甚至在for循环体内部。局部内部类有什么意义?意义就是:你希望这个类只被解决某个问题用,任何其他人,其他地方都不能用它。就像临时变量一样。生活中百年不遇我们去海边玩,专门裁出一块布来铺在沙滩上, 但这块布干什么别的事都不合适,就属于...

qq_44639795的博客 323

深度学习初探 - 入门 DL 主流框架

这个课程主要是引导大家入门TensorFlow、Theano、Keras 及 Caffe 几个主流的深度学习框架。在课程中有关各种算法的详细推导及思想我们不会做过多的陈诉,旨在通过让同学们动手操作搭建自己的神经网络模型,了解如何使用这些框架解决实际问题。课程会基于每个框架的官方文档,先带大家熟悉框架中基本的定义语法及常用函数(可看成深度模型的小零件),每个实验最后都会综合这些零件搭建一个简易的神经深度网络模型。这个项目十分适合具有一定python编程基础,对人工智能、深度学习感兴趣的同学。Theano。

2401_86435672的博客 1235

S32K344开发环境搭建全攻略:S32DS 3.5.12与RTD 3.0.0实战指南

在嵌入式开发中,集成开发环境(IDE)与实时驱动(RTD)的协同配置是项目启动的关键。S32DS作为NXP官方IDE,结合RTD包,为S32K3系列提供底层驱动支持。正确安装与路径配置能确保编译、调试与烧录流程顺畅,避免常见错误。该环境适用于汽车电子、工业控制等场景,如车身域控、BMS。本文基于S32K344芯片,详细记录从软件下载到调试的完整过程,帮助开发者快速搭建稳定开发环境。

weixin_42713608的博客 212

局部内部类(Local inner classes)

前面提到过,可以在代码块里面创建内部类,典型的方式是在一个方法体的里面创建。局 部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内 的常量,和此外围类所有的成员。下面的例子是对局部内部类与匿名内部类的创建作比较。   //:c08:LocalInnerClass.java // Holds asequence of Objects. import com.b

u011282129的专栏 774

GD32F4系列Keil工程模板搭建全攻略(手把手教学版)

本文提供了一份详细的GD32F4系列Keil工程模板搭建指南。从软件安装、固件库获取、目录规划,到Keil工程创建、文件添加、关键配置(如编译器选项、头文件路径、时钟设置),再到代码定制与常见问题排查,手把手教你构建一个标准化、模块化的开发基础。文章重点介绍了如何利用官方固件库和代码模板,快速建立稳定高效的开发环境,适用于GD32F407等Cortex-M4内核芯片的入门与项目开发。

weixin_29159995的博客 429

member,local ,anonymous三种内部类

第二天:(Java中的三种内部类基础)内部类: 内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为 Dog 的外部类和其内部定义的名为 Cat 的内部类。编译完成后出现 Dog .class 和 Dog $Cat .class 两类。一:成员内部类( member inner class): 1.不对外开放,高内聚,保密性强 2.与外部类方法,属性成员同级别 3.不能

tangtang 532

基于YOLOv11与相机标定的齿轮尺寸测量系统

本文详细介绍了一种基于深度学习的目标检测算法YOLOv11与相机标定技术相结合的齿轮尺寸自动测量系统。该系统能够实时检测图像中的齿轮目标,并精确测量其关键尺寸参数,包括齿顶圆直径、齿根圆直径、模数等。我们构建了完整的深度学习解决方案,包含数据采集与标注、模型训练、相机标定、尺寸测量算法以及用户友好的UI界面。本文提供了完整的代码实现,并推荐了相关的参考数据集,为工业视觉检测领域提供了实用的技术方案。关键词:YOLOv11;齿轮检测;尺寸测量;相机标定;深度学习;工业视觉python。

YOLO 411

arcgis计算栅格平均值

打开FC栅格数据和非水体矢量数据 利用矢量数据提取对应栅格的非水体部分 2.1打开空间分析工具à提取分析à按掩膜提取 输入对应栅格数据和矢量数据 2.2提取结果如下 进行计算FC平均值 3.1打开空间分析工具à多元分析à波段集统计 输入对应栅格和输出路径 3.2统计结果如下 ...

Z_W_H_的博客 5371

局部类(Local Classes)

局部类的定义 局部类(Local Classes)是定义在任何代码块中的类,比如定义在方法中,for或者if语句里。 下面代码在方法validatePhoneNumber中定义了PhoneNumber类: public class LocalClassExample { static String regularExpression = "[^0-9]"; public...

baidu_32223873的博客 983

YOLOv8人工智能与深度学习——强化学习

本文介绍了将YOLOv8目标检测模型与强化学习结合的方法。主要应用包括自适应目标检测(动态调整检测参数)、主动学习(智能选择标注样本)和多目标跟踪优化。实现方案采用深度Q网络策略,通过定义状态表示、动作空间和奖励函数,使检测系统能根据环境反馈优化性能。该方法具有自适应优化、资源高效、持续改进等优势,能构建更智能的计算机视觉系统。文章详细说明了强化学习环境的构建、策略网络的实现以及训练过程,并提供了代码示例。

u010117029的博客 259

Nested Classes,Static Classes,Non-static Classes,Inner Classes,Local Classes,Anonymous Classes

Nested Classes 嵌套类,包括Static Classes静态类和Inner Classes

狮子王的专栏 1099

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Local classes

Local Classes Local classes are classes that are defined in a block, which is a group of zero or more statements between balanced braces. You typically find local classes defined in the body of a

狮子王的专栏 1005

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java中Provide类,方法本地内部类在Java中提供了什么好处? (What benefit do method-local inner classes provide in Java?)...

2011-04-04 19:39:211I've just read through the chapter on method-local inner classes in the SCJP book, and I'm really struggling to think of any practical use for them.I've always been under the impre...

weixin_29216957的博客 213

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Inner classes in Java, the mystery within.

Inner classes, also called Nested Classes, are nothing but classes that are defined within other classes. The nesting is a relationship between classes, not objects.Inner classes have clearly two be

Derekjiang的笔记簿 1007

When to Use Nested Classes, Local Classes, Anonymous Classes, and Lambda Expressions

As mentioned in the section Nested Classes, nested classes enable you to logically group classes that are only used in one place, increase the use of encapsulation, and create more readable and maint...

weixin_34348111的博客 204

Java内部类详解:从原理到实战应用

内部类是Java语言中实现封装与代码组织的重要机制,通过在类内部定义另一个类来实现逻辑分组和访问控制。其核心原理在于编译器生成的隐式引用机制,使得内部类可以访问外部类成员。从技术价值看,内部类既能增强封装性,又能实现多重继承的效果,在Android事件处理、集合框架迭代器等场景有广泛应用。特别是在内存敏感场景下,静态内部类相比普通内部类能减少内存开销,而匿名内部类在Java 8后可通过Lambda表达式简化。理解内部类的实现机制对优化内存使用和提升代码可维护性至关重要,也是Java开发者面试中的高频考点。

weixin_30321709的博客 436

java官方文档学习笔记2(辅助回忆)

Nested Classes 嵌套类分为两种,static的称为static nested classes,非static的是inner classes。它们都算是内部成员,inner classes还可以做到访问外部类的其他成员(即便是private),而static嵌套类则不可以直接使用外部类的成员(需要借助句柄)。 a nested class can be declared private, public, protected, or package private. (Recall that ou

ungatu的博客 177

Static Nested Class 和 Inner Class的不同 & Anonymous Inner Class

Inner Class(内部类)定义在类中的类。 Nested Class(嵌套类)是静态(static)内部类。1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象中访问非静态的外围类对象。 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? Ano...

Java 173

深度解析TEB局部规划器:解决机器人运动规划的三大核心挑战

teb_local_planner是一个基于Timed-Elastic-Bands算法的移动机器人轨迹优化器,作为ROS导航堆栈的关键组件,它能够在复杂环境中为机器人规划出安全、高效的局部运动轨迹。本文将从实际问题出发,深入分析如何通过参数配置解决机器人运动规划中的抖动、避障和效率三大核心挑战。 ## 轨迹抖动问题:时间优化与平滑性控制 机器人运动过程中最常见的抖动问题通常源于时间分辨率设置不

gitblog_00434的博客 407

终极实战指南:掌握TEB局部路径规划器的15个关键配置技巧

在移动机器人导航领域,**teb_local_planner**凭借其基于**Timed-Elastic-Bands**(时间弹性带)算法的独特优势,已成为ROS导航栈中最受欢迎的局部规划器之一。这款开源规划器不仅能生成考虑**拓扑结构**的最优运动轨迹,还能在运行时动态优化机器人的轨迹执行时间、障碍物分离和运动学约束。无论你是机器人导航的新手还是经验丰富的开发者,本文将为你提供完整的配置指南和实

gitblog_01082的博客 460

Java基础:面向对象(二)

面向对象分析是软件开发过程的第一步,它主要关注于对问题域的理解和分析。面向对象设计是在面向对象分析的基础上进行的,它主要关注于如何将分析阶段得到的需求转化为具体的设计。面向对象编程是面向对象软件开发的实现阶段,它主要关注于使用面向对象编程语言来实现设计阶段的成果。

文优 1202

【C++类和对象(下)深度解析】从初始化列表、类型转换与静态成员到友元、内部类和拷贝消除

🔥 星光编译者 · 个人主页📚 学习专栏: 《C/C++ 成长笔记》 · 《Linux 实践手册》 · 《数据结构与算法》🌄 向云端飞扬,编译属于自己的代码星河。  你好,这里是 星光编译者。  这里记录我在 C/C++、Linux、数据结构与算法 学习中遇到的真实问题、亲手验证过的代码,以及那些容易被忽略的实现细节。  比起简单罗列结论,我更愿意从问题出发,把一个知识点的来由讲清楚,把“为什么会这样”和“应该怎样解决”说明白,让每一次踩坑都沉淀成可以复用的经验。  如果这篇记录能帮你少绕一点路,或让

星光编译者的技术博客,专注 C/C++、Linux、数据结构与算法。 566
上一篇: 内部类学习(二)
下一篇: 内部类学习(四)--匿名内部类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值