diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md index 6c776d6e..d5c1691d 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md @@ -94,6 +94,28 @@ val instance: Any ::: +如果你不确定当前实例的对象是否为 `null`,你可以使用 `instanceOrNull`。 + +## instanceOrNull - field + +```kotlin:no-line-numbers +val instanceOrNull: Any? +``` + +**Change Records** + +`v1.1.7` `added` + +**Function Illustrate** + +> 获取当前 Hook 实例的对象。 + +::: danger + +如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。 + +::: + ## instanceClass - field ```kotlin:no-line-numbers @@ -313,6 +335,24 @@ inline fun instance(): T instance().finish() ``` +## instanceOrNull - method + +```kotlin:no-line-numbers +inline fun instanceOrNull(): T? +``` + +**Function Illustrate** + +`v1.1.7` `added` + +**Function Illustrate** + +> 获取当前 Hook 实例的对象 `T`。 + +**Function Example** + +用法请参考 [instance](#instance-method) 方法。 + ## args - method ```kotlin:no-line-numbers diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md index 14e89840..3c4a57dd 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md @@ -86,6 +86,28 @@ val instance: Any ::: +如果你不确定当前实例的对象是否为 `null`,你可以使用 `instanceOrNull`。 + +## instanceOrNull - field + +```kotlin:no-line-numbers +val instanceOrNull: Any? +``` + +**变更记录** + +`v1.1.7` `新增` + +**功能描述** + +> 获取当前 Hook 实例的对象。 + +::: danger + +如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。 + +::: + ## instanceClass - field ```kotlin:no-line-numbers @@ -305,6 +327,24 @@ inline fun instance(): T instance().finish() ``` +## instanceOrNull - method + +```kotlin:no-line-numbers +inline fun instanceOrNull(): T? +``` + +**变更记录** + +`v1.1.7` `新增` + +**功能描述** + +> 获取当前 Hook 实例的对象 `T`。 + +**功能示例** + +用法请参考 [instance](#instance-method) 方法。 + ## args - method ```kotlin:no-line-numbers diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt index 26f6fcf0..acc3e37b 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -87,16 +87,24 @@ class HookParam internal constructor( */ val args get() = param?.args ?: error("Current hooked Member args is null") - //val instanceOrNull? + /** + * 获取当前 Hook 实例的对象 + * + * - ❗如果你当前 Hook 的对象是一个静态 - 那么它将不存在实例的对象 + * + * - 如果你不确定当前实例的对象是否为 null - 你可以使用 [instanceOrNull] + * @return [Any] + * @throws IllegalStateException 如果对象为空 + */ + val instance get() = param?.instance ?: error("HookParam instance got null! Is this a static member?") /** * 获取当前 Hook 实例的对象 * * - ❗如果你当前 Hook 的对象是一个静态 - 那么它将不存在实例的对象 - * @return [Any] - * @throws IllegalStateException 如果对象为空 + * @return [Any] or null */ - val instance get() = param?.instance ?: error("HookParam instance got null! Is this a static member?") + val instanceOrNull get() = param?.instance /** * 获取当前 Hook 实例的类对象 @@ -186,6 +194,12 @@ class HookParam internal constructor( */ inline fun instance() = instance as? T? ?: error("HookParam instance cannot cast to ${classOf().name}") + /** + * 获取当前 Hook 实例的对象 [T] + * @return [T] or null + */ + inline fun instanceOrNull() = instanceOrNull as? T? + /** * 获取当前 Hook 对象的 [method] or [constructor] 的参数数组下标实例化类 * @return [ArgsIndexCondition]