mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-07 03:05:36 +08:00
Add new function
This commit is contained in:
@@ -59,7 +59,7 @@ class ConstructorFinder(
|
|||||||
private var remedyPlansCallback: (() -> Unit)? = null
|
private var remedyPlansCallback: (() -> Unit)? = null
|
||||||
|
|
||||||
/** [Constructor] 参数数组 */
|
/** [Constructor] 参数数组 */
|
||||||
private var params: Array<out Class<*>>? = null
|
private var paramTypes: Array<out Class<*>>? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Constructor] 参数
|
* [Constructor] 参数
|
||||||
@@ -71,7 +71,7 @@ class ConstructorFinder(
|
|||||||
*/
|
*/
|
||||||
fun param(vararg paramType: Class<*>) {
|
fun param(vararg paramType: Class<*>) {
|
||||||
if (paramType.isEmpty()) error("paramType is empty, please delete param() method")
|
if (paramType.isEmpty()) error("paramType is empty, please delete param() method")
|
||||||
params = paramType
|
paramTypes = paramType
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -80,8 +80,8 @@ class ConstructorFinder(
|
|||||||
* @throws NoSuchMethodError 如果找不到构造方法
|
* @throws NoSuchMethodError 如果找不到构造方法
|
||||||
*/
|
*/
|
||||||
private val result
|
private val result
|
||||||
get() = if (params != null)
|
get() = if (paramTypes != null)
|
||||||
ReflectionUtils.findConstructorExact(classSet, *params!!)
|
ReflectionUtils.findConstructorExact(classSet, *paramTypes!!)
|
||||||
else ReflectionUtils.findConstructorExact(classSet)
|
else ReflectionUtils.findConstructorExact(classSet)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -141,6 +141,78 @@ class FieldFinder(
|
|||||||
*/
|
*/
|
||||||
fun <T> of(instance: Any? = null) = get(instance).self as? T?
|
fun <T> of(instance: Any? = null) = get(instance).self as? T?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Int] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Int] 取不到返回 0
|
||||||
|
*/
|
||||||
|
fun ofInt(instance: Any? = null) = of(instance) ?: 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Long] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Long] 取不到返回 0L
|
||||||
|
*/
|
||||||
|
fun ofLong(instance: Any? = null) = of(instance) ?: 0L
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Short] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Short] 取不到返回 0
|
||||||
|
*/
|
||||||
|
fun ofShort(instance: Any? = null) = of<Short?>(instance) ?: 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Double] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Double] 取不到返回 0.0
|
||||||
|
*/
|
||||||
|
fun ofDouble(instance: Any? = null) = of(instance) ?: 0.0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Float] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Float] 取不到返回 0f
|
||||||
|
*/
|
||||||
|
fun ofFloat(instance: Any? = null) = of(instance) ?: 0f
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [String] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [String] 取不到返回 ""
|
||||||
|
*/
|
||||||
|
fun ofString(instance: Any? = null) = of(instance) ?: ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Boolean] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Boolean] 取不到返回 false
|
||||||
|
*/
|
||||||
|
fun ofBoolean(instance: Any? = null) = of(instance) ?: false
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到变量的 [Any] 实例
|
||||||
|
*
|
||||||
|
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
|
||||||
|
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
|
||||||
|
* @return [Any] or null
|
||||||
|
*/
|
||||||
|
fun ofAny(instance: Any? = null) = of<Any?>(instance)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 得到变量本身
|
* 得到变量本身
|
||||||
* @return [Field] or null
|
* @return [Field] or null
|
||||||
|
@@ -60,7 +60,7 @@ class MethodFinder(
|
|||||||
private var remedyPlansCallback: (() -> Unit)? = null
|
private var remedyPlansCallback: (() -> Unit)? = null
|
||||||
|
|
||||||
/** [Method] 参数数组 */
|
/** [Method] 参数数组 */
|
||||||
private var params: Array<out Class<*>>? = null
|
private var paramTypes: Array<out Class<*>>? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Method] 名称
|
* [Method] 名称
|
||||||
@@ -86,7 +86,7 @@ class MethodFinder(
|
|||||||
*/
|
*/
|
||||||
fun param(vararg paramType: Class<*>) {
|
fun param(vararg paramType: Class<*>) {
|
||||||
if (paramType.isEmpty()) error("paramType is empty, please delete param() method")
|
if (paramType.isEmpty()) error("paramType is empty, please delete param() method")
|
||||||
params = paramType
|
paramTypes = paramType
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,8 +96,8 @@ class MethodFinder(
|
|||||||
* @throws NoSuchMethodError 如果找不到方法
|
* @throws NoSuchMethodError 如果找不到方法
|
||||||
*/
|
*/
|
||||||
private val result
|
private val result
|
||||||
get() = if (params != null)
|
get() = if (paramTypes != null)
|
||||||
ReflectionUtils.findMethodBestMatch(classSet, returnType, name, *params!!)
|
ReflectionUtils.findMethodBestMatch(classSet, returnType, name, *paramTypes!!)
|
||||||
else ReflectionUtils.findMethodNoParam(classSet, returnType, name)
|
else ReflectionUtils.findMethodNoParam(classSet, returnType, name)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -332,6 +332,67 @@ class MethodFinder(
|
|||||||
*/
|
*/
|
||||||
fun <T> invoke(vararg param: Any?) = baseCall(*param) as? T?
|
fun <T> invoke(vararg param: Any?) = baseCall(*param) as? T?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [Int] 返回值类型
|
||||||
|
*
|
||||||
|
* - ❗请确认目标方法的返回值 - 发生错误会返回默认值
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [Int] 取不到返回 0
|
||||||
|
*/
|
||||||
|
fun callInt(vararg param: Any?) = invoke(param) ?: 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [Long] 返回值类型
|
||||||
|
*
|
||||||
|
* - ❗请确认目标方法的返回值 - 发生错误会返回默认值
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [Long] 取不到返回 0
|
||||||
|
*/
|
||||||
|
fun callLong(vararg param: Any?) = invoke(param) ?: 0L
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [Short] 返回值类型
|
||||||
|
*
|
||||||
|
* - ❗请确认目标方法的返回值 - 发生错误会返回默认值
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [Short] 取不到返回 0
|
||||||
|
*/
|
||||||
|
fun callShort(vararg param: Any?) = invoke<Short?>(param) ?: 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [Double] 返回值类型
|
||||||
|
*
|
||||||
|
* - ❗请确认目标方法的返回值 - 发生错误会返回默认值
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [Double] 取不到返回 0
|
||||||
|
*/
|
||||||
|
fun callDouble(vararg param: Any?) = invoke(param) ?: 0.0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [Float] 返回值类型
|
||||||
|
*
|
||||||
|
* - ❗请确认目标方法的返回值 - 发生错误会返回默认值
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [Float] 取不到返回 0f
|
||||||
|
*/
|
||||||
|
fun callFloat(vararg param: Any?) = invoke(param) ?: 0f
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [String] 返回值类型
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [String] 取不到返回 ""
|
||||||
|
*/
|
||||||
|
fun callString(vararg param: Any?) = invoke(param) ?: ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行方法 - 指定 [Boolean] 返回值类型
|
||||||
|
*
|
||||||
|
* - ❗请确认目标方法的返回值 - 发生错误会返回默认值
|
||||||
|
* @param param 方法参数
|
||||||
|
* @return [Boolean] 取不到返回 false
|
||||||
|
*/
|
||||||
|
fun callBoolean(vararg param: Any?) = invoke(param) ?: false
|
||||||
|
|
||||||
override fun toString() =
|
override fun toString() =
|
||||||
"[${(memberInstance as? Method?)?.name ?: "<empty>"}] in [${instance?.javaClass?.name ?: "<empty>"}]"
|
"[${(memberInstance as? Method?)?.name ?: "<empty>"}] in [${instance?.javaClass?.name ?: "<empty>"}]"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user