探測片段資料項目

片段的資料項目是指片段的程式碼可參照的資料項目名稱和類型。

資料項目的規格是選用的。一個片段可以包含多個資料項目,但每一種項目只能出現一次。

資料項目包含下列內容:
內容 說明
資料類型 必要的項目。下表將列出可用的類型。
名稱 必要的項目。必須指定一個有效的 Java 變數名稱。探測片段程式碼會利用這個名稱來參照指定的資料。
下表列出和說明 Probekit 編輯器中可用的資料類型:
資料類型 類型 說明
className String

以 Method 探測而言,指被探測方法的類別名稱,包括套件名稱,以內部格式表示;以 Callsite 探測而言,指被呼叫方法的類別名稱。

範例:org/eclipse/tptp/SomeClass

methodName String

以 Method 探測而言,指被探測方法的方法名稱,以內部格式表示;以 Callsite 探測而言,指被呼叫方法的方法名稱。

建構子的方法名稱是 <init>,static 類別起始設定程式的方法名稱是 <clinit>

methodSig String

方法引數和傳回類型簽章,採內部格式。不適用於 staticInitializer 片段。

範例:(Ljava/lang/String;)I

thisObject Object

傳給被探測方法的 this 物件(用於實例方法)。不適用於 staticInitializer 片段。

對於 static 方法、套用至建構子的 entry 片段, 以及建構子擲出異常狀況時套用至建構子的 exit 片段,thisObjectnull

args Object[]

Object 參照的陣列,代表被探測之方法的引數。對於方法的每一個引數(this 引數不算)來說,這個陣列有一個元素。初始類型的引數會封裝在適當參照類型的暫時物件中, 例如:int 封裝成 Integer。如果方法沒有引數,則 Object[] 陣列的大小為零。

請注意,非 Static 內部類別的建構元,它在每一個「內部」層都有一個隱藏式引數, 因此,引數陣列所含的元素,要比程式碼所含的元素更多。不適用於 staticInitializer 片段。

returnedObject Object 即將傳回之物件的參照。這個類型僅適用於 exitafterCall 片段。如果被探測方法的傳回類型是初始類型,則傳回值一定是適當參照類型的暫時物件。如果方法是 void(不傳回值)或隨著異常狀況而結束,則 returnedObjectnull
exceptionObject Throwable 即將擲出之異常狀況物件的參照。這個類型只適用於 catchexit 片段。如果方法正常結束,則 exceptionObject 將為 null
isFinally boolean 為一旗標,可指出片段是從 finally 子句 (true) 呼叫, 還是從 catch 子句 (false) 呼叫。它只適用於 catch 片段。
staticField (varies) 靜態欄位所參照的物件。其類型與 staticField 物件所宣告的一樣。這僅適用於探測宣告 staticField 的情況。(請參閱 staticField 和 staticInitializer 探測範例。) 它不適用於 Callsite 探測。
classSourceFile String 程式檔名稱資訊,可從類別檔的除錯屬性取得。如果沒有程式碼資訊,則 classSourceFilenull。對於 Java 而言,該值只不過是檔案名稱,並沒有路徑資訊。它不適用於 Callsite 探測。
methodNames String

編碼的方法名稱和簽章清單。這份清單中的方法順序,與 methodLineTables 中的方法順序一樣, 也與 methodNumber 資料項目所反映的順序一樣。清單中不含 Probekit 在類別內插入的任何方法的名稱。

methodNames 字串是由一或多個方法名稱和簽章所組成,中間以一個加號 ("+") 區隔。方法簽章是採 Java 內部格式。例如,假設類別有兩個方法、一個預設建構子及一個需要 String 且傳回 intrun 方法, 則類別有這個 methodNames 字串:<init>()V+run(Ljava/lang/String;)I

它不適用於 Callsite 探測。

methodLineTables String 編碼的行號清單,這些行號各自對應到類別中的每一個程式碼執行單元。清單中不含 Probekit 在類別內插入的執行單元。如需編碼的說明,請參閱 methodLineTables 資料字串格式。它不適用於 Callsite 探測。
methodNumber Integer methodNames 表中的索引號碼,代表片段被插進的方法。不適用於 Callsite 探測或 staticInitializer 片段。
executableUnitNumber Integer 探測片段被插進的執行單元數目。這個資料類型僅適用於 executableUnit 和 catch 探測片段。如果方法沒有程式碼指令行資訊,則只會有一個編號為零的執行單元。
範例:

若要輸入探測片段資料項目,請在樹狀窗格中選取片段, 在編輯窗格中使用新增編輯來輸入並定義資料項目。

Probekit 編輯器,顯示片段的資料項目

相關參照
探測片段 Java 原始程式碼
探測片段類型