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 e9f2164a..9b6cdfee 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 @@ -13,7 +13,7 @@ You can use the **Chrome Translation Plugin** to translate entire pages for refe # HookParam - class ```kotlin:no-line-numbers -class HookParam internal constructor( +class HookParam private constructor( private val creatorInstance: YukiMemberHookCreator, private var paramId: String, private var param: YukiHookCallback.Param? @@ -34,6 +34,10 @@ class HookParam internal constructor( 新增 `paramId` 参数 +`v1.2.0` `modified` + +不再开放构造方法 + **Function Illustrate** > Hook 方法、构造方法的目标对象实现类。 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 70c5fee7..6d61f654 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 @@ -5,7 +5,7 @@ pageClass: code-page # HookParam - class ```kotlin:no-line-numbers -class HookParam internal constructor( +class HookParam private constructor( private val creatorInstance: YukiMemberHookCreator, private var paramId: String, private var param: YukiHookCallback.Param? @@ -26,6 +26,10 @@ class HookParam internal constructor( 新增 `paramId` 参数 +`v1.2.0` `修改` + +不再开放构造方法 + **功能描述** > Hook 方法、构造方法的目标对象实现类。 diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt index 3660c23e..80d83d25 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt @@ -585,13 +585,10 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa * @return [YukiHookResult] */ private fun Member.hook(): YukiHookResult { - /** 定义替换 Hook 的 [HookParam] */ - val replaceHookParam = HookParam(creatorInstance = this@YukiMemberHookCreator) - /** 定义替换 Hook 回调方法体 */ val replaceMent = object : YukiMemberReplacement(priority.toPriority()) { override fun replaceHookedMember(param: Param) = - replaceHookParam.assign(replaceHookId, param).let { assign -> + HookParam.create(this@YukiMemberHookCreator, replaceHookId, param).let { assign -> runCatching { replaceHookCallback?.invoke(assign).also { checkingReturnType((param.member as? Method?)?.returnType, it?.javaClass) @@ -608,16 +605,10 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa } } - /** 定义前 Hook 的 [HookParam] */ - val beforeHookParam = HookParam(creatorInstance = this@YukiMemberHookCreator) - - /** 定义后 Hook 的 [HookParam] */ - val afterHookParam = HookParam(creatorInstance = this@YukiMemberHookCreator) - /** 定义前后 Hook 回调方法体 */ val beforeAfterHook = object : YukiMemberHook(priority.toPriority()) { override fun beforeHookedMember(param: Param) { - beforeHookParam.assign(beforeHookId, param).also { assign -> + HookParam.create(this@YukiMemberHookCreator, beforeHookId, param).also { assign -> runCatching { beforeHookCallback?.invoke(assign) checkingReturnType((param.member as? Method?)?.returnType, param.result?.javaClass) @@ -633,7 +624,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa } override fun afterHookedMember(param: Param) { - afterHookParam.assign(afterHookId, param).also { assign -> + HookParam.create(this@YukiMemberHookCreator, afterHookId, param).also { assign -> runCatching { afterHookCallback?.invoke(assign) if (afterHookCallback != null) YLog.innerD("After Hook Member [${this@hook}] done [$tag]") diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt index c071fb2e..e47d22cd 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -46,7 +46,7 @@ import java.lang.reflect.Method * @param paramId 当前回调方法体 ID * @param param Hook 结果回调接口 */ -class HookParam internal constructor( +class HookParam private constructor( private val creatorInstance: YukiMemberHookCreator, private var paramId: String = "", private var param: YukiHookCallback.Param? = null @@ -60,24 +60,22 @@ class HookParam internal constructor( /** [HookParam] 是否已经执行首次回调事件 */ internal var isCallbackCalled = false + /** + * 创建新的 [HookParam] + * @param creatorInstance [YukiMemberHookCreator] 的实例对象 + * @param paramId 当前回调方法体 ID + * @param param Hook 结果回调接口 + * @return [HookParam] + */ + internal fun create(creatorInstance: YukiMemberHookCreator, paramId: String, param: YukiHookCallback.Param) = + HookParam(creatorInstance, paramId, param) + /** 设置 [HookParam] 执行首次回调事件 */ internal fun invoke() { isCallbackCalled = true } } - /** - * 在回调中设置 [HookParam] 使用的 [YukiHookCallback.Param] - * @param paramId 当前回调方法体 ID - * @param param Hook 结果回调接口 - * @return [HookParam] - */ - internal fun assign(paramId: String, param: YukiHookCallback.Param): HookParam { - this.paramId = paramId - this.param = param - return this - } - /** * 获取当前 Hook 对象 [method] or [constructor] 的参数对象数组 *