• <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, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

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

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

              我們?cè)撊绾握{(diào)試那些非自己源碼的方法調(diào)用呢?比方說,對(duì)Jbutton.setEnable()的調(diào)用。Java提供的匿名類,可以很好的解決這個(gè)問題。

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

              public class MyButton extends JButton

              {

              public void setVisible( boolean visible )

              {

              // Rolling our own visibility

             

              }

              }

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

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

              JButton myButton = new JButton()

              {

              public void setVisible( boolean visible )

              {

              // Rolling our own visibility

             

              }

              };

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

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

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

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

             

             

            posted on 2009-08-03 20:12 肥仔 閱讀(164) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Web-后臺(tái)

            久久99精品久久久大学生| 日本精品久久久中文字幕| 久久香蕉国产线看观看99| 亚洲精品午夜国产VA久久成人| 久久久久久一区国产精品| 久久精品无码一区二区日韩AV| 国产精品久久久久久| 国产精品国色综合久久| 久久国产高潮流白浆免费观看| WWW婷婷AV久久久影片| 狠狠色丁香久久婷婷综合五月| 亚洲伊人久久大香线蕉综合图片| 性做久久久久久久久老女人 | 欧美伊人久久大香线蕉综合69| 久久久久久久久久久免费精品| 久久久久亚洲AV无码专区网站| 久久久久国产一区二区| 一本久久免费视频| 久久热这里只有精品在线观看| 久久精品国产亚洲av麻豆蜜芽| 一本久道久久综合狠狠爱| 久久天天躁狠狠躁夜夜不卡| 伊人久久大香线蕉亚洲五月天| 久久久久久久久无码精品亚洲日韩| 久久99国产精品99久久| 久久精品国产精品亚洲| 国产成人久久精品一区二区三区| 久久天天躁狠狠躁夜夜avapp| 久久91综合国产91久久精品| 久久精品人妻一区二区三区| 久久久久久伊人高潮影院| 97精品伊人久久大香线蕉app| 国内精品久久久久久久亚洲| 久久天天躁狠狠躁夜夜2020一| 久久国产精品-国产精品| 久久久久婷婷| 久久w5ww成w人免费| 一本一本久久a久久精品综合麻豆| avtt天堂网久久精品| 久久免费视频6| 99久久精品久久久久久清纯|