• <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-后臺

            久久99精品国产99久久| 欧美精品丝袜久久久中文字幕| 久久精品国产亚洲Aⅴ蜜臀色欲| av无码久久久久不卡免费网站 | 99久久精品免费看国产免费| 色婷婷综合久久久久中文一区二区| 久久国产亚洲精品| 精品久久亚洲中文无码| 日本五月天婷久久网站| 麻豆av久久av盛宴av| 久久亚洲日韩精品一区二区三区| 亚洲国产精品无码久久久蜜芽| 狠狠综合久久综合88亚洲| 中文字幕无码精品亚洲资源网久久| 久久精品国产乱子伦| 嫩草伊人久久精品少妇AV| 久久精品国产精品青草| 国内精品久久久久久麻豆| 久久人人添人人爽添人人片牛牛| 亚洲精品tv久久久久久久久| 99久久er这里只有精品18| 久久综合九色综合久99| 一本一本久久a久久精品综合麻豆| 思思久久好好热精品国产 | 亚洲综合日韩久久成人AV| 欧洲成人午夜精品无码区久久| 国产精品美女久久久久网| 久久精品亚洲精品国产欧美| 久久天天躁狠狠躁夜夜2020一| 97r久久精品国产99国产精| 国产综合免费精品久久久| 国内精品人妻无码久久久影院导航| 精品久久久久久国产潘金莲| 久久男人中文字幕资源站| 久久亚洲AV成人出白浆无码国产| 国产成人99久久亚洲综合精品 | 久久婷婷五月综合97色| 久久精品国产亚洲av瑜伽| 久久久女人与动物群交毛片| 综合久久一区二区三区 | 久久久黄片|