mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Modify change FieldCondition, MethodCondition, ConstructorCondition to FieldConditions, MethodConditions, ConstructorConditions in ReflectionFactory
This commit is contained in:
@@ -31,8 +31,8 @@ package com.highcapable.yukihookapi.hook.bean
|
||||
|
||||
import com.highcapable.yukihookapi.hook.core.finder.members.FieldFinder
|
||||
import com.highcapable.yukihookapi.hook.core.finder.members.MethodFinder
|
||||
import com.highcapable.yukihookapi.hook.factory.FieldCondition
|
||||
import com.highcapable.yukihookapi.hook.factory.MethodCondition
|
||||
import com.highcapable.yukihookapi.hook.factory.FieldConditions
|
||||
import com.highcapable.yukihookapi.hook.factory.MethodConditions
|
||||
import com.highcapable.yukihookapi.hook.factory.field
|
||||
import com.highcapable.yukihookapi.hook.factory.method
|
||||
|
||||
@@ -70,14 +70,14 @@ class CurrentClass @PublishedApi internal constructor(@PublishedApi internal val
|
||||
* @param initiate 查找方法体
|
||||
* @return [FieldFinder.Result.Instance]
|
||||
*/
|
||||
inline fun field(initiate: FieldCondition) = classSet.field(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
inline fun field(initiate: FieldConditions) = classSet.field(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
|
||||
/**
|
||||
* 调用当前实例中的方法
|
||||
* @param initiate 查找方法体
|
||||
* @return [MethodFinder.Result.Instance]
|
||||
*/
|
||||
inline fun method(initiate: MethodCondition) = classSet.method(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
inline fun method(initiate: MethodConditions) = classSet.method(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
|
||||
/**
|
||||
* 当前类的父类实例的类操作对象
|
||||
@@ -111,14 +111,14 @@ class CurrentClass @PublishedApi internal constructor(@PublishedApi internal val
|
||||
* @param initiate 查找方法体
|
||||
* @return [FieldFinder.Result.Instance]
|
||||
*/
|
||||
inline fun field(initiate: FieldCondition) = superClassSet.field(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
inline fun field(initiate: FieldConditions) = superClassSet.field(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
|
||||
/**
|
||||
* 调用父类实例中的方法
|
||||
* @param initiate 查找方法体
|
||||
* @return [MethodFinder.Result.Instance]
|
||||
*/
|
||||
inline fun method(initiate: MethodCondition) = superClassSet.method(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
inline fun method(initiate: MethodConditions) = superClassSet.method(initiate).result { if (isShutErrorPrinting) ignored() }.get(instance)
|
||||
|
||||
override fun toString() = "CurrentClass super [${superClassSet}]"
|
||||
}
|
||||
|
@@ -325,7 +325,7 @@ class YukiMemberHookCreator(@PublishedApi internal val packageParam: PackagePara
|
||||
* @param initiate 方法体
|
||||
* @return [MethodFinder.Process]
|
||||
*/
|
||||
inline fun method(initiate: MethodCondition) = runCatching {
|
||||
inline fun method(initiate: MethodConditions) = runCatching {
|
||||
isHookMemberSetup = true
|
||||
MethodFinder(hookInstance = this, hookClass.instance).apply(initiate).apply { finder = this }.process()
|
||||
}.getOrElse {
|
||||
@@ -340,7 +340,7 @@ class YukiMemberHookCreator(@PublishedApi internal val packageParam: PackagePara
|
||||
* @param initiate 方法体
|
||||
* @return [ConstructorFinder.Process]
|
||||
*/
|
||||
inline fun constructor(initiate: ConstructorCondition = { emptyParam() }) = runCatching {
|
||||
inline fun constructor(initiate: ConstructorConditions = { emptyParam() }) = runCatching {
|
||||
isHookMemberSetup = true
|
||||
ConstructorFinder(hookInstance = this, hookClass.instance).apply(initiate).apply { finder = this }.process()
|
||||
}.getOrElse {
|
||||
@@ -353,7 +353,7 @@ class YukiMemberHookCreator(@PublishedApi internal val packageParam: PackagePara
|
||||
* @param initiate 方法体
|
||||
* @return [FieldFinder.Result]
|
||||
*/
|
||||
inline fun HookParam.field(initiate: FieldCondition) =
|
||||
inline fun HookParam.field(initiate: FieldConditions) =
|
||||
if (hookClass.instance == null) FieldFinder(hookInstance = this@MemberHookCreator).failure(hookClass.throwable)
|
||||
else FieldFinder(hookInstance = this@MemberHookCreator, hookClass.instance).apply(initiate).build()
|
||||
|
||||
@@ -362,7 +362,7 @@ class YukiMemberHookCreator(@PublishedApi internal val packageParam: PackagePara
|
||||
* @param initiate 方法体
|
||||
* @return [MethodFinder.Result]
|
||||
*/
|
||||
inline fun HookParam.method(initiate: MethodCondition) =
|
||||
inline fun HookParam.method(initiate: MethodConditions) =
|
||||
if (hookClass.instance == null) MethodFinder(hookInstance = this@MemberHookCreator).failure(hookClass.throwable)
|
||||
else MethodFinder(hookInstance = this@MemberHookCreator, hookClass.instance).apply(initiate).build()
|
||||
|
||||
@@ -371,7 +371,7 @@ class YukiMemberHookCreator(@PublishedApi internal val packageParam: PackagePara
|
||||
* @param initiate 方法体
|
||||
* @return [ConstructorFinder.Result]
|
||||
*/
|
||||
inline fun HookParam.constructor(initiate: ConstructorCondition = { emptyParam() }) =
|
||||
inline fun HookParam.constructor(initiate: ConstructorConditions = { emptyParam() }) =
|
||||
if (hookClass.instance == null) ConstructorFinder(hookInstance = this@MemberHookCreator).failure(hookClass.throwable)
|
||||
else ConstructorFinder(hookInstance = this@MemberHookCreator, hookClass.instance).apply(initiate).build()
|
||||
|
||||
|
@@ -37,7 +37,7 @@ import com.highcapable.yukihookapi.hook.core.finder.base.MemberBaseFinder
|
||||
import com.highcapable.yukihookapi.hook.core.finder.members.data.ConstructorRulesData
|
||||
import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules
|
||||
import com.highcapable.yukihookapi.hook.core.reflex.tools.ReflectionTool
|
||||
import com.highcapable.yukihookapi.hook.factory.ConstructorCondition
|
||||
import com.highcapable.yukihookapi.hook.factory.ConstructorConditions
|
||||
import com.highcapable.yukihookapi.hook.factory.checkingInternal
|
||||
import com.highcapable.yukihookapi.hook.factory.hasExtends
|
||||
import com.highcapable.yukihookapi.hook.log.yLoggerW
|
||||
@@ -249,7 +249,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
* 若最后依然失败 - 将停止查找并输出错误日志
|
||||
* @param initiate 方法体
|
||||
*/
|
||||
inline fun constructor(initiate: ConstructorCondition) =
|
||||
inline fun constructor(initiate: ConstructorConditions) =
|
||||
Result().apply { remedyPlans.add(Pair(ConstructorFinder(hookInstance, classSet).apply(initiate), this)) }
|
||||
|
||||
/** 开始重查找 */
|
||||
|
@@ -39,7 +39,7 @@ import com.highcapable.yukihookapi.hook.core.finder.members.data.FieldRulesData
|
||||
import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules
|
||||
import com.highcapable.yukihookapi.hook.core.finder.type.NameConditions
|
||||
import com.highcapable.yukihookapi.hook.core.reflex.tools.ReflectionTool
|
||||
import com.highcapable.yukihookapi.hook.factory.FieldCondition
|
||||
import com.highcapable.yukihookapi.hook.factory.FieldConditions
|
||||
import com.highcapable.yukihookapi.hook.factory.checkingInternal
|
||||
import com.highcapable.yukihookapi.hook.factory.current
|
||||
import com.highcapable.yukihookapi.hook.factory.hasExtends
|
||||
@@ -228,7 +228,7 @@ class FieldFinder @PublishedApi internal constructor(
|
||||
* @param initiate 方法体
|
||||
* @return [Result] 结果
|
||||
*/
|
||||
inline fun field(initiate: FieldCondition) =
|
||||
inline fun field(initiate: FieldConditions) =
|
||||
Result().apply { remedyPlans.add(Pair(FieldFinder(hookInstance, classSet).apply(initiate), this)) }
|
||||
|
||||
/** 开始重查找 */
|
||||
|
@@ -38,7 +38,7 @@ import com.highcapable.yukihookapi.hook.core.finder.members.data.MethodRulesData
|
||||
import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules
|
||||
import com.highcapable.yukihookapi.hook.core.finder.type.NameConditions
|
||||
import com.highcapable.yukihookapi.hook.core.reflex.tools.ReflectionTool
|
||||
import com.highcapable.yukihookapi.hook.factory.MethodCondition
|
||||
import com.highcapable.yukihookapi.hook.factory.MethodConditions
|
||||
import com.highcapable.yukihookapi.hook.factory.checkingInternal
|
||||
import com.highcapable.yukihookapi.hook.factory.hasExtends
|
||||
import com.highcapable.yukihookapi.hook.log.yLoggerW
|
||||
@@ -322,7 +322,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
* @param initiate 方法体
|
||||
* @return [Result] 结果
|
||||
*/
|
||||
inline fun method(initiate: MethodCondition) =
|
||||
inline fun method(initiate: MethodConditions) =
|
||||
Result().apply { remedyPlans.add(Pair(MethodFinder(hookInstance, classSet).apply(initiate), this)) }
|
||||
|
||||
/** 开始重查找 */
|
||||
|
@@ -43,13 +43,13 @@ import java.lang.reflect.Member
|
||||
import java.lang.reflect.Method
|
||||
|
||||
/** 定义 [FieldFinder] 方法体类型 */
|
||||
internal typealias FieldCondition = FieldFinder.() -> Unit
|
||||
internal typealias FieldConditions = FieldFinder.() -> Unit
|
||||
|
||||
/** 定义 [MethodFinder] 方法体类型 */
|
||||
internal typealias MethodCondition = MethodFinder.() -> Unit
|
||||
internal typealias MethodConditions = MethodFinder.() -> Unit
|
||||
|
||||
/** 定义 [ConstructorFinder] 方法体类型 */
|
||||
internal typealias ConstructorCondition = ConstructorFinder.() -> Unit
|
||||
internal typealias ConstructorConditions = ConstructorFinder.() -> Unit
|
||||
|
||||
/**
|
||||
* 定义一个 [Class] 中的 [Member] 类型
|
||||
@@ -111,21 +111,21 @@ fun String.hasClass(loader: ClassLoader? = null) = ReflectionTool.hasClassByName
|
||||
* @param initiate 方法体
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
inline fun Class<*>.hasField(initiate: FieldCondition) = field(initiate).ignored().isNoSuch.not()
|
||||
inline fun Class<*>.hasField(initiate: FieldConditions) = field(initiate).ignored().isNoSuch.not()
|
||||
|
||||
/**
|
||||
* 查找方法是否存在
|
||||
* @param initiate 方法体
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
inline fun Class<*>.hasMethod(initiate: MethodCondition) = method(initiate).ignored().isNoSuch.not()
|
||||
inline fun Class<*>.hasMethod(initiate: MethodConditions) = method(initiate).ignored().isNoSuch.not()
|
||||
|
||||
/**
|
||||
* 查找构造方法是否存在
|
||||
* @param initiate 方法体
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
inline fun Class<*>.hasConstructor(initiate: ConstructorCondition = { emptyParam() }) = constructor(initiate).ignored().isNoSuch.not()
|
||||
inline fun Class<*>.hasConstructor(initiate: ConstructorConditions = { emptyParam() }) = constructor(initiate).ignored().isNoSuch.not()
|
||||
|
||||
/**
|
||||
* 查询 [Member] 中匹配的描述符
|
||||
@@ -146,21 +146,21 @@ inline fun Class<*>.hasModifiers(initiate: ModifierRules.() -> Unit) = ModifierR
|
||||
* @param initiate 查找方法体
|
||||
* @return [FieldFinder.Result]
|
||||
*/
|
||||
inline fun Class<*>.field(initiate: FieldCondition) = FieldFinder(classSet = this).apply(initiate).build()
|
||||
inline fun Class<*>.field(initiate: FieldConditions) = FieldFinder(classSet = this).apply(initiate).build()
|
||||
|
||||
/**
|
||||
* 查找并得到方法
|
||||
* @param initiate 查找方法体
|
||||
* @return [MethodFinder.Result]
|
||||
*/
|
||||
inline fun Class<*>.method(initiate: MethodCondition) = MethodFinder(classSet = this).apply(initiate).build()
|
||||
inline fun Class<*>.method(initiate: MethodConditions) = MethodFinder(classSet = this).apply(initiate).build()
|
||||
|
||||
/**
|
||||
* 查找并得到构造方法
|
||||
* @param initiate 查找方法体
|
||||
* @return [ConstructorFinder.Result]
|
||||
*/
|
||||
inline fun Class<*>.constructor(initiate: ConstructorCondition = { emptyParam() }) = ConstructorFinder(classSet = this).apply(initiate).build()
|
||||
inline fun Class<*>.constructor(initiate: ConstructorConditions = { emptyParam() }) = ConstructorFinder(classSet = this).apply(initiate).build()
|
||||
|
||||
/**
|
||||
* 获得当前实例的类操作对象
|
||||
@@ -192,7 +192,7 @@ inline fun <reified T : Any> T.current(ignored: Boolean = false, initiate: Curre
|
||||
* @return [Any] or null
|
||||
*/
|
||||
@Deprecated(message = "请使用新的命名方法", replaceWith = ReplaceWith(expression = "buildOf(*param, initiate)"))
|
||||
fun Class<*>.buildOfAny(vararg param: Any?, initiate: ConstructorCondition = { emptyParam() }) = buildOf(*param, initiate)
|
||||
fun Class<*>.buildOfAny(vararg param: Any?, initiate: ConstructorConditions = { emptyParam() }) = buildOf(*param, initiate)
|
||||
|
||||
/**
|
||||
* 通过构造方法创建新实例 - 任意类型 [Any]
|
||||
@@ -200,7 +200,7 @@ fun Class<*>.buildOfAny(vararg param: Any?, initiate: ConstructorCondition = { e
|
||||
* @param initiate 查找方法体
|
||||
* @return [Any] or null
|
||||
*/
|
||||
inline fun Class<*>.buildOf(vararg param: Any?, initiate: ConstructorCondition = { emptyParam() }) =
|
||||
inline fun Class<*>.buildOf(vararg param: Any?, initiate: ConstructorConditions = { emptyParam() }) =
|
||||
constructor(initiate).get().call(*param)
|
||||
|
||||
/**
|
||||
@@ -210,7 +210,7 @@ inline fun Class<*>.buildOf(vararg param: Any?, initiate: ConstructorCondition =
|
||||
* @return [T] or null
|
||||
*/
|
||||
@JvmName(name = "buildOf_Generics")
|
||||
inline fun <T> Class<*>.buildOf(vararg param: Any?, initiate: ConstructorCondition = { emptyParam() }) =
|
||||
inline fun <T> Class<*>.buildOf(vararg param: Any?, initiate: ConstructorConditions = { emptyParam() }) =
|
||||
constructor(initiate).get().newInstance<T>(*param)
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user