• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            用java匿名類來簡化調(diào)試

            IT168 技術(shù)文檔】在Java中,匿名類(Anonymous inner classes)多用來處理事件(event handle)。但其實(shí),它們對于debug也很有幫助。本文將介紹如何利用匿名類來簡化你的debug

              我們該如何調(diào)試那些非自己源碼的方法調(diào)用呢?比方說,對Jbutton.setEnable()的調(diào)用。Java提供的匿名類,可以很好的解決這個問題。

              通常,當(dāng)我們繼承一個類時(shí),我們可以通過提供新的方法來覆蓋(override)該類中現(xiàn)有的方法:

              public class MyButton extends JButton

              {

              public void setVisible( boolean visible )

              {

              // Rolling our own visibility

             

              }

              }

              在實(shí)例化(instantiate)MyButton類之后,任何對方法setVisible()的調(diào)用,都會調(diào)用上面代碼中的setVisible()方法。可問題是,我們不想僅僅為了覆蓋一個方法而繼承整個類,尤其是所需的實(shí)例(instantiation)很有限的時(shí)候。匿名類使得我們能在實(shí)例化的同時(shí)覆蓋方法。

              如果我們只想在某個JButton對象中加入我們自己的可視邏輯,那么我們可以在申明這個button對象的同時(shí)重寫這個方法:

              JButton myButton = new JButton()

              {

              public void setVisible( boolean visible )

              {

              // Rolling our own visibility

             

              }

              };

              這段代碼都做了什么?花括號({)中間的代碼申明了setVisible()方法,并覆蓋了JButton類中的那個,但這僅限于myButton對象。我們沒有改變JButton類,也沒有申明一個新類,我們僅給了一個特殊的JButton對象它自己的可視邏輯。

              在面向?qū)ο笮g(shù)語中,myButton是一個從JButton類繼承而來的無名,也就是匿名,類的對象。

              這種創(chuàng)建匿名類并同時(shí)覆蓋方法的技術(shù)用在什么時(shí)候?假設(shè)你在編寫一段Swing程序,在你向一個GUI物件(element)中添加一個event listener(假設(shè)叫作ActionListener)之前,你已經(jīng)編寫了一段這種機(jī)制的代碼。現(xiàn)在,我們假設(shè)我們有個龐大的類,里面有很多按鈕,但是有一個按鈕時(shí)隱時(shí)現(xiàn),你想知道為什么會出這樣的異常情況,利用上面的代碼并在setVisible()方法上設(shè)置斷點(diǎn)。然后,當(dāng)你運(yùn)行你的程序時(shí),你設(shè)置的斷點(diǎn)就會在恰當(dāng)?shù)牡胤綍和3绦颉z查棧軌跡(stack trace),我們會發(fā)現(xiàn)沒有按所預(yù)期的那樣來調(diào)用setVisible()方法的原因并修復(fù)這個它。

              匿名類在debug類似這種源碼不可得的類的時(shí)候很有用。即便在源碼可得的情況下,在大量使用的方法(setVisible)上設(shè)置斷點(diǎn),也是件很麻煩的事情,因?yàn)槲覀冊诿總€實(shí)現(xiàn)了setVisible()方法的類的對象上都要轉(zhuǎn)入斷點(diǎn)。而匿名類可針對某個特定的對象進(jìn)行外科手術(shù)式的debug

             

             

            posted on 2009-08-03 20:12 肥仔 閱讀(174) 評論(0)  編輯 收藏 引用 所屬分類: Web-后臺

            天天躁日日躁狠狠久久| 丁香狠狠色婷婷久久综合| 久久最新免费视频| 亚洲av伊人久久综合密臀性色| 精品久久亚洲中文无码| 91精品观看91久久久久久| 一极黄色视频久久网站| 93精91精品国产综合久久香蕉| 久久受www免费人成_看片中文| 97久久久精品综合88久久| 亚洲国产成人久久综合一区77| 久久99国产综合精品| 日产久久强奸免费的看| 久久精品国产一区| 久久丫精品国产亚洲av不卡| 久久综合九色欧美综合狠狠 | 亚洲成av人片不卡无码久久| 成人午夜精品无码区久久| 欧美精品一区二区久久| 99热成人精品免费久久| 久久99精品久久久久子伦| 伊人久久国产免费观看视频| AAA级久久久精品无码区| WWW婷婷AV久久久影片| 97久久婷婷五月综合色d啪蜜芽| 国产日韩欧美久久| 国产精品久久国产精麻豆99网站| 久久久精品国产免大香伊 | 色综合久久久久综合体桃花网 | 久久超乳爆乳中文字幕| 午夜精品久久久久久毛片| 日韩va亚洲va欧美va久久| 久久e热在这里只有国产中文精品99| 亚洲国产精品久久久久久| 99久久婷婷国产一区二区| 国产精品免费看久久久香蕉| 大蕉久久伊人中文字幕| 99国内精品久久久久久久| 久久免费99精品国产自在现线| 国产高清美女一级a毛片久久w| 国产精品亚洲综合专区片高清久久久|