Target 探針物件

Target 探針物件是指定要套用探針的類別和方法。

Target 物件可視需要選擇使用。如果未指定 Target,探針將套用到由插入程序引擎所處理的所有類別。

Target 物件可讓您建立過濾規則,根據比對套件、類別和方法名稱,以及方法簽章的型樣來併入或排除要插入的方法。型樣可以包含萬用字元,"*" 表示符合零或多個字元。

如果 Target 的萬用字元型樣符合方法的套件、類別、名稱和簽章,type 內容會決定是(併入)否(排除)要在方法中進行插入。如果型樣不符合方法的套件、類別、名稱和簽章,依預設會在方法中進行插入。

Target 物件包括下列內容:
內容 說明
type 必要。type 內容決定是否要套用探針到目標方法。指定 include 可套用探針到符合萬用字元型樣的類別和方法,exclude 則會排除。
package 可視需要選擇使用。指定符合類別名稱的套件部分的萬用字元型樣。例如:java.util* 可符合 java.util 套件與其子套件中的每一個類別。如果未指定,預設值為 *
className 可視需要選擇使用。指定符合類別名稱的萬用字元型樣。如果未指定,預設值為 *
method 可視需要選擇使用。指定符合方法名稱的萬用字元型樣。如果未指定,預設值為 *
signature 可視需要選擇使用。指定符合方法的簽章的萬用字元型樣 - 亦即,代表方法的引數和傳回類型的字串。這是方法簽章的 Java 內部格式。例如:(Ljava/lang/Object;)D 是以 Object 為參數並傳回 double 之方法的簽章。這個萬用字元型樣可以用來區分各個超載方法。如果未指定,預設值為 *

附註:

  • 一個探針可以有多個 Target 物件包含連續的目標規則。如果只要針對您指定的方法,請在您要針對之方法的 Target 物件之後新增最終 Target 物件,指定 package=* className=* method=* signature=* type=exclude
  • Target 物件中指定的套件和類別名稱,也會檢查類別實作之任何介面的套件和類別名稱。例如,java.util.HashMap 實作 java.util.Map 介面。如果探針的目標是套件 java.util、類別名稱 Map 和方法名稱 size,探針將套用到 java.util.HashMap.size(),以及實作 Map 介面之任何其他類別的 size 方法。
  • 型樣相符不考慮繼承關係:如果類別 Derived 繼承類別 Base,而且探針的目標是 Base.run(),探針將不會自動套用到 Derived.run()
  • 如果 Target 物件中的套件型樣是單一句點字元 ("."),則代表廣域、未指名的 Java 套件。這可讓您明確地指定廣域套件中的類別為目標。例如:
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    這兩個目標規則會使探針以廣域套件中的 SomeClass 類別為目標,而排除所有其他類別。這些規則會排除任何其他套件中名稱為 SomeClass 的類別。
  • Callsite 探針會針對被呼叫方法的套件、類別、名稱和簽章來比對目標型樣與規則。比對動作的進行是針對在編譯時期所得知的被呼叫方法;亦即,針對靜態已知的類別和方法名稱,而不是因為繼承和虛擬函數而呼叫的實際方法。如果是透過介面參照的呼叫,則必須符合介面名稱。
範例
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

內含於
Probe 物件

上層主題: Probekit 元素參照

Terms of use | Feedback
(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved.