利用静态内部类为您的代码添加辅助功能 作者 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

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

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

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

  1. Python版本的Markdown工具:Handout使用教程!用Python代码直接排版!

    内容摘要: ---------------------------------------------------------------------------------------------- ...

  2. java替换字符串中的 “ 双引号 并添加正 斜杠 \)

    java替换字符串中的 " 双引号 并添加正 斜杠 \ java替换字符串中的 " 双引号 并添加正斜杠 \ 解决方案很多.像我一样强行死磕(吐血),或者换别的传参方式.(理论上后 ...

  3. java inner class,C# Inner Class vs. java 的inner class比较-JSP教程,Java技巧及代码

    作者: leafwiz www.aspcool.com 时间:2004-11-6 15:50:57 阅读次数:1811 今天朋友问到,为什么在c#中inner class不能够访问外部类的非静态成员, ...

  4. java el表达式 导航规则_诺禾:在jsp里面如何不写java代码展示数据(EL表达式的使用)...

    EL表达式可以简化jsp中写的java代码 在jsp里面如何不写java代码展示数据(EL表达式的使用) 在jsp里面如何不写java代码展示数据(EL表达式的使用) 在jsp里面如何不写java代码 ...

  5. 用JAVA代码利用坐标构造三角形、椭圆、直线并求其周长、面积

    用JAVA代码利用坐标构造三角形.椭圆.线段线并求其周长.面积 主测试程序 ShapeCreator类 Shape类 Oval类 line类 Rectangle类 Triangle类 本程序主要靠编写 ...

  6. java程序获取外部java程序的控件,将 Java 小程序迁移到 Microsoft J# 浏览器控件-JSP教程,Java技巧及代码...

    visual j# .net 小组 microsoft corporation 摘要:通过 microsoft j# 浏览器控件,开发人员可以将所编写的在 java 虚拟机上运行的 java 小程序迁 ...

  7. Java基础知识(一),打好基础才能写出高质量代码

    前沿:不管工作多久,基础永远是最重要的,好多大厂看的就是基础好不好,所以写代码的同时,基础知识还是要去理解和记忆的,坚持每天来看一点 Java基础.语法: java面向对象的特征有哪些方面? 1.抽象 ...

  8. DW-CHEN的Java点滴记录JavaWeb之HTTP协议/Servlet/Cookie/Session/JSP/EL/JSTL/Filter/Listener

    JavaEE规范 JavaEE(Java Enterprise Edition):Java企业版,早期叫J2EE(J2EE的版本从1.0到1.4结束):现在Java版本从JavaEE 5开始 Java ...

  9. java后台利用模板生成Word文档提供前台下载

    2016.12.06更新,java后台利用Apache poi生成Excel文档提供前台下载,博客链接http://blog.csdn.net/u010251278/article/details/5 ...

最新文章

  1. 这可能是Python面向对象编程的最佳实践
  2. Visual C++ 控制栏
  3. 【JavaWeb】Access restriction The type is not accessible due to restriction on required library
  4. JavaScript学习与实践(8)
  5. codeforces D. Palindrome Degree(hash)
  6. pheonix从入门到进阶
  7. A - A Secret -扩展KMP
  8. JsonData响应工具类封装
  9. java 提高性能的 容器库_容器隔离性带来的问题--容器化Java应用比虚机启动速度慢...
  10. Memcache安全性
  11. 【软件工程】第一次阅读作业
  12. OSPF邻接关系状态机
  13. C++笔试题目大全(笔试宝典)(不断完善中)
  14. linux系统开发安卓应用,在 Linux 里搭建 Android App 开发环境
  15. C语言读写SQLite数据库
  16. 免费制作在线网站教程
  17. 唯我倾城网上购物商城设计与实现
  18. 你在职场可能犯下的最大错误
  19. vim 删除文件单行或多行内容
  20. java: 关于反射

热门文章

  1. 对Lucene PhraseQuery的slop的理解
  2. [跟我学中小企业架构部署]之一:整体架构设计
  3. Delphi 7 以来的语法等变化
  4. 织梦 tags.php静态化,dedecms网站tag标签全部静态化的解决方法
  5. 信息学奥赛一本通(2054:【例3.4】适合晨练)
  6. 数列分段(信息学奥赛一本通-T1428)
  7. 回文字符串(51Nod-1092)
  8. 高精度减法(洛谷-P2142)
  9. 57 SD配置-科目分配-定义客户账户分配组
  10. 35 FI配置-财务会计-应收账款和应付账款-为客户定义备选统驭科目