From 9201a18b96d472c930dcb96cbf119a07df2a6c5e Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Thu, 11 Aug 2022 22:35:55 +0800 Subject: [PATCH] Modify make self function private in FieldFinder.Instance --- docs/api/public/FieldFinder.md | 14 +++++--------- docs/guide/special-feature.md | 10 ++++++---- .../yukihookapi/hook/core/finder/FieldFinder.kt | 6 ++++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/api/public/FieldFinder.md b/docs/api/public/FieldFinder.md index d4438d14..414a06a1 100644 --- a/docs/api/public/FieldFinder.md +++ b/docs/api/public/FieldFinder.md @@ -532,25 +532,21 @@ inner class Instance internal constructor(private val instance: Any?, private va 新增 `field` 参数 -移动 `self` 参数到类变量 +不再对外公开 `self` 参数 **功能描述** > `Field` 实例变量处理类。 -##### self [field] - -```kotlin -val self: Any? -``` +##### ~~self [field]~~ **变更记录** -`v1.0.93` `新增` +`v1.0` `添加` -**功能描述** +`v1.0.93` `移除` -> 获取当前 `Field` 自身的实例化对象。 +请直接使用 `any` 方法得到 `Field` 自身的实例化对象 ##### cast [method] diff --git a/docs/guide/special-feature.md b/docs/guide/special-feature.md index abfd6a17..54009cb7 100644 --- a/docs/guide/special-feature.md +++ b/docs/guide/special-feature.md @@ -120,7 +120,7 @@ val instance = Test() Test::class.java.field { name = "isTaskRunning" type = BooleanType -}.get(instance).self // self 为 Field 的实例对象 +}.get(instance).any() // any 为 Field 的任意类型实例化对象 ``` 更多用法可参考 [FieldFinder](api/document?id=fieldfinder-class)。 @@ -176,7 +176,9 @@ Test::class.java.method { }.get(instance).string() // 得到方法的结果 ``` -是的,对于确切不会变化的方法,你可以精简查询条件,**`YukiHookAPI` 会默认按照字节码顺序匹配第一个查询到的结果**。 +是的,对于确切不会变化的方法,你可以精简查询条件。 + +在只使用 `get` 或 `wait` 方法得到结果时 `YukiHookAPI` **会默认按照字节码顺序匹配第一个查询到的结果**。 问题又来了,这个 `Class` 中有一个 `release` 方法,但是它的方法参数好长,而且很多的类型都无法直接得到。 @@ -454,7 +456,7 @@ val instance = Test() Test::class.java.field { name = "a" type = BooleanType -}.get(instance).self // 得到名称为 a 类型为 Boolean 的变量 +}.get(instance).any() // 得到名称为 a 类型为 Boolean 的变量 ``` 第二种方案,确定变量的类型所在的位置。 @@ -467,7 +469,7 @@ val instance = Test() // 使用 YukiHookAPI 调用并执行 Test::class.java.field { type(BooleanType).index().first() -}.get(instance).self // 得到第一个类型为 Boolean 的变量 +}.get(instance).any() // 得到第一个类型为 Boolean 的变量 ``` 以上两种情况均可得到对应的变量 `private boolean a`。 diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt index 6092d1e5..964639df 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt @@ -461,9 +461,11 @@ class FieldFinder @PublishedApi internal constructor( /** * 获取当前 [Field] 自身的实例化对象 + * + * - 若要直接获取不确定的实例对象 - 请调用 [any] 方法 * @return [Any] or null */ - val self get() = field?.get(instance) + private val self get() = field?.get(instance) /** * 得到当前 [Field] 实例 @@ -547,7 +549,7 @@ class FieldFinder @PublishedApi internal constructor( * 得到当前 [Field] 的 [Any] 实例 * @return [Any] or null */ - fun any() = cast() + fun any() = self /** * 得到当前 [Field] 的 [Array] 实例 - 每项类型 [T]