<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    利用靜態(tài)內(nèi)部類為您的代碼添加輔助功能

    利用靜態(tài)內(nèi)部類為您的代碼添加輔助功能
    作者 javaworld.com">John D. Mitchell

    摘要
    這個(gè)技巧提供了一個(gè)實(shí)例,它可以利用靜態(tài)內(nèi)部類為您的類添加獨(dú)立的、可選的輔助功能,例如測試和示例代碼等。( 500

    學(xué)會(huì)了這個(gè)技巧,您便可以把 靜態(tài)內(nèi)部類 的使用加入到您的 Java 使用技巧集錦當(dāng)中。靜態(tài)內(nèi)部類是在另一個(gè)類的定義中進(jìn)行定義,并且標(biāo)記為靜態(tài)的類。我將向您展示一個(gè)實(shí)例,它利用靜態(tài)內(nèi)部類向另一個(gè)類中添加測試代碼。

    靜態(tài)內(nèi)部類在概念和實(shí)現(xiàn)上都十分簡單,基本上來說就是在您的主類中定義一個(gè)靜態(tài)類:

    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();

    ?

    ?????????????????? }

    ???????? }

    }

    說到向您主要的類中添加輔助代碼,其中最重要的一點(diǎn)就是靜態(tài)內(nèi)部類被編譯到一個(gè)單獨(dú)的 .class 文件中,這個(gè)文件獨(dú)立于它的外部類。例如,如果外部類叫做 Foo ,而它的一個(gè)內(nèi)部類叫 Test ,那么這個(gè)內(nèi)部類將被編譯成 Foo$Test.class 文件。 .class 文件的分離意味著您可以將輔助的嵌套代碼與主要的外部類牢固地捆綁在一起。它們在同一個(gè)源文件中,內(nèi)部類的確是在外部類的 內(nèi)部 。您無需再付出任何發(fā)布或運(yùn)行時(shí)的開銷。真棒!例如,如果輔助代碼只是用于調(diào)試,那么您只需發(fā)布 Foo.class 文件而將 Foo$Test.class 文件留下即可。

    我將這個(gè)技巧主要用于編寫外部類的演示代碼、錯(cuò)誤調(diào)試代碼,以及進(jìn)行單元測試實(shí)現(xiàn)類行為的自動(dòng)驗(yàn)證。(當(dāng)然,做為一個(gè)勤奮的開發(fā)人員,我準(zhǔn)備將測試代碼轉(zhuǎn)化成單元測試。)

    注意,要執(zhí)行 TestDebug .class 類的 main() 方法,請使用下面的命令:

    % java TestDebug$Test

    如果您正在使用的命令解釋程序( shell )把 “$” 做為一個(gè)保留字,那么您應(yīng)該使用下面的命令:

    % java TestDebug\$Test

    還有一點(diǎn)十分有趣:靜態(tài)內(nèi)部類根據(jù)定義可以訪問外部類的保護(hù)域和私有域。這件事可以說既有利也有弊。因?yàn)槟赡茉诓唤?jīng)意間就破壞了外部類的保護(hù)域和私有域,從而違反了它的封裝性,所以請小心對待!這一功能最恰當(dāng)?shù)膽?yīng)用就是編寫類的 白盒 測試程序--因?yàn)檫@樣可以引入一些利用通常的黑盒測試很難引入的問題(黑盒測試不能訪問對象的內(nèi)部狀態(tài))。

    結(jié)論
    通過使用靜態(tài)內(nèi)部類,您可以給您的系統(tǒng)添加輔助功能,以便完成諸如測試之類的工作,而對正式發(fā)布的產(chǎn)品不會(huì)帶來任何不利影響。

    ?

    posted on 2007-01-29 16:21 Tom 閱讀(314) 評論(0)  編輯  收藏 所屬分類: Java

    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類(42)

    隨筆檔案(43)

    文章分類

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品亚洲а∨无码播放| 不卡精品国产_亚洲人成在线| 亚洲香蕉免费有线视频| 野花香在线视频免费观看大全| 老司机亚洲精品影视www| eeuss影院免费92242部| 久久亚洲AV无码西西人体| 好猛好深好爽好硬免费视频| 国产成人综合亚洲亚洲国产第一页 | 久久国产成人亚洲精品影院| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲精品高清在线| 国产精品极品美女自在线观看免费| 久久久久亚洲AV成人网人人网站| 中文字幕一区二区免费| 蜜芽亚洲av无码精品色午夜| 99久久久国产精品免费无卡顿| 亚洲国产成a人v在线观看 | 国产一区二区三区无码免费| 粉色视频在线观看www免费| 亚洲区不卡顿区在线观看| 任你躁在线精品免费| 亚洲美免无码中文字幕在线| 24小时日本在线www免费的| 在线观看亚洲网站| 成人午夜亚洲精品无码网站 | 无人在线观看免费高清视频| 亚洲成熟丰满熟妇高潮XXXXX | 2021在线永久免费视频| 亚洲成人激情小说| 中文字幕不卡亚洲| h视频在线观看免费网站| 国产精品无码亚洲精品2021| 亚洲色婷婷综合久久| 免费专区丝袜脚调教视频| 亚洲AV无码XXX麻豆艾秋| 亚洲国产精品无码专区| 全免费A级毛片免费看网站| 中文在线观看国语高清免费| 亚洲中文无码a∨在线观看| 亚洲XX00视频|