数据探测对象包含片段的代码对象中由源代码引用的数据项的名称和类型。
“数据”对象是可选的。探测片段可以包含多个“数据”对象,但一个片段中的两个“数据”对象不能有相同类型或名称。
属性 | 描述 |
---|---|
name | 必需。必须指定有效的 Java 变量名称。 |
type | 必需。下表中列出了可用的类型。 |
类型 | 数据类型 | 描述 |
---|---|---|
className | 字符串 | 内部格式的所探测方法的类名,包括程序包名称。 示例:org/eclipse/hyades/SomeClass |
methodName | 字符串 | 内部格式的所探测方法的方法名称。对于 staticInitializer 片段无效。 构造函数有方法名称 <init>,静态类初始化方法将 <clinit> 作为方法名称。 |
methodSig | 字符串 | 内部格式的方法实参和返回类型特征符。对于 staticInitializer 片段无效。 示例:(Ljava/lang/String;)I |
thisObject | 对象 | 传送给探测的方法的 this 对象(用于实例方法)。对于 staticInitializer 片段无效。 对于静态方法、应用于构造函数的 entry 片段以及当构造函数抛出异常时应用于构造函数的 exit 片段,thisObject 将为 null。 |
args | Object[] | Object 引用的数组,这些引用代表所探测方法的实参。对于方法的每个实参(未计算 this 实参),该数组中都有一个元素。基本类型的实参被绑定到适当的引用类型的临时对象,例如:Integer 对应于 int。 如果方法没有实参,则 Object[] 数组的大小将为零。注意非静态内部类的构造函数对每个“内部”级别有一个隐藏的实参,所以实参数组包含的元素将比源代码中出现的元素多。对于 staticInitializer 片段无效。 |
returnedObject | 对象 | 对正被返回的对象的引用。该类型仅可用于 exit 片段。如果探测的方法的返回类型是基本类型,则将把返回的值绑定至适当引用类型的临时对象。 如果该方法是 void(不返回值)或是异常引起的退出,则 returnedObject 将为 null。 仅在 afterCall 片段中有效。 |
exceptionObject | 可抛出 | 对正被抛出的异常对象的引用。该类型仅可用于 catch 和 exit 片段。如果该方法正常退出,则 exceptionObject 将为 null。 |
isFinally | 布尔 | 表明片段是从 finally 子句(真)还是从 catch 子句(假)调用的一个标志。仅在 catch 片段中有效。 |
staticField | (变化) | 由静态字段引用的对象。其类型与 staticField 对象中声明的类型相同。 仅当探测还有 staticField 对象时才有效。对于 callsite 探测无效。 |
classSourceFile | 字符串 | 可从类文件的调试属性中获取的源文件名称信息。如果没有源文件信息,则 classSourceFile 将为 null。对于 Java,该值通常仅仅是文件名,不带路径信息。 对于 callsite 探测无效。 |
methodNames | 字符串 | 编码的方法名称和特征符列表。 该列表中方法的顺序与 methodLineTables 中方法的顺序相同,并且与 methodNumber 数据项反映的排序相同。该列表将不包含任何由 Probekit 插入到类中去的方法的名称。 methodNames 字符串由一个或多个方法名称和特征符组成,由加号(“+”)分隔。方法特征符是 Java 内部格式。 例如:有两个方法、一个缺省构造函数、一个方法 run(该方法调用 String 并且返回 int)的类有以下 methodNames 字符串:<init>()V+run(Ljava/lang/String;)I 对于 callsite 探测无效。 |
methodLineTables | 字符串 | 编码的行号列表,行号与类中代码的每个可执行单元相对应。该列表将不包含由 Probekit 插入到类中的可执行单元。关于编码的解释信息,请参阅 methodLineTables 字符串格式。对于 callsite 探测无效。 |
methodNumber | 整数 | methodNames 表中用于插入探测片段的方法的索引号。对于 callsite 探测或 staticInitializer 片段无效。 |
executableUnitNumber | 整数 | 插入探测片段的可执行单元数。该数据类型仅对于 executableUnit 和 catch 探测片段有效。如果该方法没有源代码行信息,则它将显示为具有单个可执行单元,编号为零。 |
<data type="className" name="__class" />
包含于
片段探测对象