利用静态内部类为您的代码添加辅助功能

java学习笔记32:内部类:静态和非静态内部类、匿名内部类、方法内部类 一、内部类 内部类(innerclasses):把一个类放在另一个类的内部定义      内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。 注意   内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Outer的外部类和其内部定义的名为In... 阅读详情

利用静态内部类为您的代码添加辅助功能
作者 John D. Mitchell

摘要
这个技巧提供了一个实例,它可以利用静态内部类为您的类添加独立的、可选的辅助功能,例如测试和示例代码等。( 500 字)

学会了这个技巧,您便可以把静态内部类的使用加入到您的 Java 使用技巧集锦当中。静态内部类是在另一个类的定义中进行定义,并且标记为静态的类。我将向您展示一个实例,它利用静态内部类向另一个类中添加测试代码。

静态内部类在概念和实现上都十分简单,基本上来说就是在您的主类中定义一个静态类:

public class TestDebug

{

         private double num;

         public TestDebug(double in)

         {

                   num = in;

         }

         public void output()

         {

                   System.out.println(num);

                  

         }

         public static class Test

         {

                   public static void main(String[] args)

                   {

                            TestDebug td  = new TestDebug(3.9);

                            td.output();

 

                   }

         }

}

说到向您主要的类中添加辅助代码,其中最重要的一点就是静态内部类被编译到一个单独的 .class 文件中,这个文件独立于它的外部类。例如,如果外部类叫做 Foo,而它的一个内部类叫 Test,那么这个内部类将被编译成 Foo$Test.class 文件。.class 文件的分离意味着您可以将辅助的嵌套代码与主要的外部类牢固地捆绑在一起。它们在同一个源文件中,内部类的确是在外部类的 内部。您无需再付出任何发布或运行时的开销。真棒!例如,如果辅助代码只是用于调试,那么您只需发布 Foo.class 文件而将 Foo$Test.class 文件留下即可。

我将这个技巧主要用于编写外部类的演示代码、错误调试代码,以及进行单元测试实现类行为的自动验证。(当然,做为一个勤奋的开发人员,我准备将测试代码转化成单元测试。)

注意,要执行 TestDebug.class 类的 main() 方法,请使用下面的命令:

% java TestDebug$Test

如果您正在使用的命令解释程序(shell)把“$”做为一个保留字,那么您应该使用下面的命令:

% java TestDebug/$Test

还有一点十分有趣:静态内部类根据定义可以访问外部类的保护域和私有域。这件事可以说既有利也有弊。因为您可能在不经意间就破坏了外部类的保护域和私有域,从而违反了它的封装性,所以请小心对待!这一功能最恰当的应用就是编写类的 白盒测试程序--因为这样可以引入一些利用通常的黑盒测试很难引入的问题(黑盒测试不能访问对象的内部状态)。

结论
通过使用静态内部类,您可以给您的系统添加辅助功能,以便完成诸如测试之类的工作,而对正式发布的产品不会带来任何不利影响。

 

Mamba-UNet:用于医学图像分割的类似UNet的纯视觉Mamba网络 所提出的Mamba-UNet的架构如图2所示,其灵感来源于UNet [24] 和 Swin-UNet [3]。首先将大小为 H × W × 1 的2D灰度图像分割成类似于ViT和VMamba的块 [5,16],然后转换为维度为 H/4 × W/4 × 16 的1D序列。一个初始的线性嵌入层将特征维度调整为任意大小C。这些块令牌随后通过多个VSS块和块合并层进行处理,以创建分层特征。块合并层负责下采样和维度增加,而VSS块则专注于学习特征表示。 阅读详情

相关推荐

体系结构学习-6-超标量处理器

 MIPS32-5段流水线采用了指令级并行方式(5个流水段同时运行5条指令)提升系统吞吐率,是一种标量处理器(CPI≥1CPI \ge 1CPI≥1),但是一个周期一条指令以及无法满足现代计算机需求了。 超标量处理器(Superscalar) 1、基本思想:增强指令集并行,让每个周期执行更多指令,实现 CPI<1CPI<1CPI<1 。(IPC=1/CPIIPC = 1...

qq_40891899的博客 1212

一些常用的辅助代码 (网络收藏)

点击返回上页代码:弹出警告框代码:function AlertButton(){window.alert("要多多光临呀!");}// -->点击打开新窗口function NewWindow(){window.open("http://www.mcmx.com","","height=240,width=340,status=no,location=no,toolbar=no,direc

站在岸上的鱼 1059

Transformer模型在语义通信中的实战应用:从信源编码到端到端优化

本文深入探讨了Transformer模型在语义通信中的实战应用,从信源编码到端到端优化。文章分析了Transformer凭借其强大的全局依赖建模能力,如何成为实现高效语义提取与传输的理想架构,并提供了构建可端到端训练系统的具体实现思路与评估方法,旨在为下一代智能通信系统提供技术参考。

o9p0q1的博客 689

Java中增强类功能的几种方法

今天就Java语言中关于类功能方法增强这一块的内容进行了梳理与整理。便借此PO出自己的第一篇关于技术方面的博文,将自己的所学,所思,所感码出来,是分享,亦是学习。 这里所提到的方法增强就是通过Java的一些特性来对一个类的功能进行丰富与增强,便于对现有的项目进行扩展。这里主要介绍3种方法,即继承或实现接口类、装饰者模式和动态代理。首先从基础的概念入手: 继

Roker 3418

告别反复格式化!用Ventoy制作2025年终极启动盘,Windows/Linux/macOS一网打尽

本文详细介绍了如何使用Ventoy制作2025年终极多系统启动盘,彻底告别反复格式化U盘的烦恼。Ventoy通过创新的引导加载器架构,允许用户在一个U盘内同时存放并直接启动Windows、Linux、macOS等多种系统镜像和WePE等维护工具,实现真正的非破坏性管理和极高的U盘利用率。文章涵盖从安装配置、镜像库构建到安全启动设置等全流程实战指南。

weixin_29280219的博客 241

别再死记硬背了!用‘瞬时极性法’5分钟搞定三极管反馈电路类型判断

本文介绍了使用‘瞬时极性法’快速判断三极管反馈电路类型的高效技巧。通过假设输入信号变化并追踪传递路径,该方法能准确区分正负反馈、电压电流反馈、串联并联反馈及交直流反馈,避免传统死记硬背的弊端,显著提升电路分析效率。

weixin_42524708的博客 183

Java内部静态类

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34015860的博客 263

Veritas NetBackup 10.1 Windows安装指南:从账户配置到完整部署

本文详细介绍了Veritas NetBackup 10.1在Windows系统上的完整安装流程,从账户配置到部署验证。重点讲解了创建专用服务账户、安装组件选择、许可证输入等关键步骤,并提供了常见问题排查和进阶配置建议,帮助用户顺利完成企业级备份解决方案的部署。

weixin_26765287的博客 453

Java静态工具类

JDK常用静态工具类实用总结----2019-3-15 JDK中有很多内置工具类以s结尾,集合工具类Collections,数组工具类Arrays,对象工具类Objects,文件工具类Files,路径工具类Paths,数学工具类Maths,还有TimeUtil和System 1、Objects中有很多有用的Api,如空指针判断、对象比相等较等。 判断两个对象是否相等,两个参数都为nul...

xuxin132133的博客 2627

嵌入式常用通信协议 #概述

嵌入式通信协议

AFK3060的博客 2116

深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?

首先介绍 AI 时代 Java 开发框架选择背景,接着对比两者功能特性(Spring AI 的生态集成与标准化设计、LangChain4j 的多模型适配与提示工程)、应用场景(企业级系统改造与创新产品开发)、开发体验(学习成本与调试工具)、生态扩展(Spring 商业支持与 LangChain4j 开源社区)、性能安全(企业级优化与自主安全实现)及成本趋势(短期投入、长期回报与技术演进),最后给出选型建议与混合架构方案。

博客 5444

jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...

利用静态内部类为您的代码添加辅助功能 作者 john d. mitchell摘要这个技巧提供了一个实例,它可以利用静态内部类为您的类添加独立的、可选的辅助功能,例如测试和示例代码等。( 500 字)学会了这个技巧,您便可以把静态内部类的使用加入到您的 java 使用技巧集锦当中。静态内部类是在另一个类的定义中进行定义,并且标记为静态的类。我将向您展示一个实例,它利用静态内部类向另一个类中添加测试代...

weixin_34358799的博客 173

2026年江苏省职业院校技能大赛高职组“软件测试”赛项智能体辅助测试参考答案

2026年江苏省职业院校技能大赛高职组“软件测试”赛项智能体辅助测试参考答案

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1325

内部类和静态内部类

在一次偶然工作中,发现对类中的内部类和静态内部类的相关知识点有些不明确,因此通过本文章对相关知识点进行一个学习,如果有存在问题,欢迎指出纠正。

Bananaaay的博客 1055

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

静态内部类和非静态内部类的区别

静态内部类和非静态内部类的区别: 1. 静态内部类不持有外部类的引用 在普通内部类中,可以直接访问外部类的属性、方法,即使是private类型也可以,这是因为普通内部类持有外部类的引用,可以自由访问。而静态内部类只能访问外部类的静态方法和静态属性(如果是private也能访问)。 2. 静态内部类不依赖外部类 普通内部类与外部类之间是相互依赖关系,内部类实例不能脱离外部类实例,也就是说他们会同生共死,一起声明,一起被垃圾回收。而静态内部类是可以独立存在的,即使外部类消亡了,静态内部类还是可以存在的。 静态内

长不大的大灰狼 4672

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

内部类与静态内部类

内部类与静态内部类 目录 前言 内部类 1.1 非静态内部类 1.1.1 定义 1.1.2 内部类的特殊语法规则 1.2 静态内部类 回到顶部 前言   如果你是一个急性子,没什么耐性的人,可以只看下句,自己去品味理解:   内部类:就是我是你的一部分,我了解你,我知道你的全部,没有你就没有我。(所以内部类对象是以外部类对象存在为前提的)   静态内部类:就是我跟你没关系,自己可以完全独立存在,但是我就借你的壳用一下,来隐藏自己。   如果还不知道静态和普通成员..

qq_40826814的博客 2984

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

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

Java中静态内部类

java的静态内部类实战

djj1015591892的博客 1941

Java中的静态内部类详解

静态内部类是Java中一种重要的内部类形式,它不依赖于外部类的实例,具有访问外部类静态成员的能力,并且在实现辅助类、Builder模式以及提高代码封装性方面非常有用。通过理解静态内部类的特点和使用场景,可以帮助我们编写更加结构化和模块化的代码。静态内部类有其独特的特性和用途,理解静态内部类可以帮助我们编写更加结构化和模块化的代码。在Java中,内部类是一种将类定义在另一个类内部的结构。静态内部类可以访问外部类的静态成员,但不能直接访问外部类的非静态成员。是一个静态内部类,它可以访问外部类的静态成员。

省赚客开发者博客 2608

JAVA静态代码块、普通代码块、静态内部类、普通内部类加载顺序

先上结论 外部类加载时,会初始化静态变量、静态代码块,但是并不会加载静态内部类和普通内部类 实例化类时,会先初始化类的普通代码块,再执行类的构造方法 直接调用类的静态内部类时,外部类不会加载。 测试代码: public class ClassLoadTest { static { System.out.println("静态代码块"); } { ...

Desperdo 1188

Java 静态内部类 与 非静态内部类的区别?什么时候用静态内部类,又是什么时候用非静态内部类?

Java中内部类加载时间:一般是只有运到了才会初始化,而不是外部内加载的时候(不管是静态还是非静态内部类)。 注意到一个问题: 内部类只有是静态的,其内部类中才能有静态属性和静态方法; 如果内部类非静态的,其内部类不能有静态属性和静态方法。 例子: public class OutClass { static{ System.out.println("OutCla

方丈的博客 7754

Java静态内部类的作用

在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。    在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。    一、静态内部类的使用目的。    在定义内部类的时候,可以在其前面加上一个权...

3295

非静态内部类和静态内部类

非静态内部类非静态内部类依赖于外部类的实例,即每个非静态内部类的实例都隐式地与一个外部类的实例相关联。创建非静态内部类的实例时,必须先有一个外部类的实例。// 使用示例// 输出: Outer Field静态内部类静态内部类不依赖于外部类的实例,它可以独立于外部类的任何实例而存在。创建静态内部类的实例时,不需要外部类的实例。// 使用示例// 输出: Static Field非静态内部类。

qq_45884192的博客 898

Java内部类应用——静态内部类

一点睛 如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。因此使用static修饰的内部类被称为类内部类,也称为静态内部类。 static关键字不可修饰外部类,但可修饰内部类。 二实战——静态内部类不能访问外部类的实例成员,只能访问外部类的类成员 1点睛 静态内部类可以包含静态成员,也可以包含非静态成员。根据静态成员不能访问非静态成员的规...

实践求真知 2767

java内部类之成员内部类、静态内部类

内部类其实就是一个类中还包含着另外一个类 如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类,而心脏又在人体当中,正如同是内部类在外部内当中 广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部

gongpulin的博客 4367

详述静态内部类和非静态内部类

目录 一.静态内部类 1.在静态方法中 2.在非静态方法中 二.非静态内部类 1.在静态方法中 2.在非静态方法中 三.使用中的注意事项 1.静态内部类只能直接定义在外部类中 2.静态内部类访问成员变量 3.使用范围 4.内部类中使用static 在一个外部类中定义的类称为内部类,内部类可以分为静态和非静态 一.静态内部类 由static修饰的内部类就是静态内部类,以...

ANFO的博客 1204

搞懂static关键字,静态变量、静态代码块、静态内部类

比如在创建一个学生类,假设郑州大学录取了一万名新生,那么在创建一万个 Student 对象的时候,所有的字段(name、age 和 school)都会获取到一块内存。学生的姓名和年纪不尽相同,但都属于郑州大学,如果每创建一个对象,school 这个字段都要占用一块内存的话,就很浪费,于是static String school=”郑州大学”,这样就只会占用一块内存,而不是一万块。:如果一个类仅仅是为了帮助外部类完成某些功能,而这些功能又不需要外部类的实例状态,使用静态内部类是非常合适的选择。

wdghcfrg的博客 509
上一篇: Java类别载入器
下一篇: 笑话
coolriver
博客等级 码龄26年 68粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值