Changed some function and add new function to demo

This commit is contained in:
2022-03-29 13:49:07 +08:00
parent ee9ea8b2d5
commit 31410eb6e1
10 changed files with 236 additions and 118 deletions

View File

@@ -145,83 +145,6 @@ class FieldFinder(
Instance(instance, self = null)
}
/**
* 得到变量实例
* @param instance 变量所在的实例对象 - 如果是静态可不填 - 默认 null
* @return [T] or null
*/
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
@@ -256,6 +179,106 @@ class FieldFinder(
*/
inner class Instance(private val instance: Any?, val self: Any?) {
/**
* 得到变量实例
* @return [T] or null
*/
fun <T> cast() = get(instance).self as? T?
/**
* 得到变量的 [Byte] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回 null
* @return [Byte] or null
*/
fun byte() = cast<Byte?>()
/**
* 得到变量的 [Int] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Int] 取不到返回 0
*/
fun int() = cast() ?: 0
/**
* 得到变量的 [Long] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Long] 取不到返回 0L
*/
fun long() = cast() ?: 0L
/**
* 得到变量的 [Short] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Short] 取不到返回 0
*/
fun short() = cast<Short?>() ?: 0
/**
* 得到变量的 [Double] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Double] 取不到返回 0.0
*/
fun double() = cast() ?: 0.0
/**
* 得到变量的 [Float] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Float] 取不到返回 0f
*/
fun float() = cast() ?: 0f
/**
* 得到变量的 [String] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [String] 取不到返回 ""
*/
fun string() = cast() ?: ""
/**
* 得到变量的 [Char] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Char] 取不到返回 ' '
*/
fun char() = cast() ?: ' '
/**
* 得到变量的 [Boolean] 实例
*
* - ❗请确认目标变量的类型 - 发生错误会返回默认值
* @return [Boolean] 取不到返回 false
*/
fun boolean() = cast() ?: false
/**
* 得到变量的 [Any] 实例
* @return [Any] or null
*/
fun any() = cast<Any?>()
/**
* 得到变量的 [Array] 实例 - 每项类型 [T]
*
* - ❗请确认目标变量的类型 - 发生错误会返回空数组
* @return [Array] 取不到返回空数组
*/
inline fun <reified T> array() = cast() ?: arrayOf<T>()
/**
* 得到变量的 [List] 实例 - 每项类型 [T]
*
* - ❗请确认目标变量的类型 - 发生错误会返回空数组
* @return [List] 取不到返回空数组
*/
inline fun <reified T> list() = cast() ?: listOf<T>()
/**
* 设置变量实例
* @param any 设置的实例内容

View File

@@ -360,6 +360,15 @@ class MethodFinder(
*/
fun <T> invoke(vararg param: Any?) = baseCall(*param) as? T?
/**
* 执行方法 - 指定 [Byte] 返回值类型
*
* - ❗请确认目标变量的类型 - 发生错误会返回 null
* @param param 方法参数
* @return [Byte] or null
*/
fun byte(vararg param: Any?) = invoke<Byte?>(*param)
/**
* 执行方法 - 指定 [Int] 返回值类型
*
@@ -367,7 +376,7 @@ class MethodFinder(
* @param param 方法参数
* @return [Int] 取不到返回 0
*/
fun callInt(vararg param: Any?) = invoke(*param) ?: 0
fun int(vararg param: Any?) = invoke(*param) ?: 0
/**
* 执行方法 - 指定 [Long] 返回值类型
@@ -376,7 +385,7 @@ class MethodFinder(
* @param param 方法参数
* @return [Long] 取不到返回 0L
*/
fun callLong(vararg param: Any?) = invoke(*param) ?: 0L
fun long(vararg param: Any?) = invoke(*param) ?: 0L
/**
* 执行方法 - 指定 [Short] 返回值类型
@@ -385,7 +394,7 @@ class MethodFinder(
* @param param 方法参数
* @return [Short] 取不到返回 0
*/
fun callShort(vararg param: Any?) = invoke<Short?>(*param) ?: 0
fun short(vararg param: Any?) = invoke<Short?>(*param) ?: 0
/**
* 执行方法 - 指定 [Double] 返回值类型
@@ -394,7 +403,7 @@ class MethodFinder(
* @param param 方法参数
* @return [Double] 取不到返回 0.0
*/
fun callDouble(vararg param: Any?) = invoke(*param) ?: 0.0
fun double(vararg param: Any?) = invoke(*param) ?: 0.0
/**
* 执行方法 - 指定 [Float] 返回值类型
@@ -403,14 +412,21 @@ class MethodFinder(
* @param param 方法参数
* @return [Float] 取不到返回 0f
*/
fun callFloat(vararg param: Any?) = invoke(*param) ?: 0f
fun float(vararg param: Any?) = invoke(*param) ?: 0f
/**
* 执行方法 - 指定 [String] 返回值类型
* @param param 方法参数
* @return [String] 取不到返回 ""
*/
fun callString(vararg param: Any?) = invoke(*param) ?: ""
fun string(vararg param: Any?) = invoke(*param) ?: ""
/**
* 执行方法 - 指定 [Char] 返回值类型
* @param param 方法参数
* @return [Char] 取不到返回 ' '
*/
fun char(vararg param: Any?) = invoke(*param) ?: ' '
/**
* 执行方法 - 指定 [Boolean] 返回值类型
@@ -419,7 +435,23 @@ class MethodFinder(
* @param param 方法参数
* @return [Boolean] 取不到返回 false
*/
fun callBoolean(vararg param: Any?) = invoke(*param) ?: false
fun boolean(vararg param: Any?) = invoke(*param) ?: false
/**
* 执行方法 - 指定 [Array] 返回值类型 - 每项类型 [T]
*
* - ❗请确认目标方法的返回值 - 发生错误会返回空数组
* @return [Array] 取不到返回空数组
*/
inline fun <reified T> array(vararg param: Any?) = invoke(*param) ?: arrayOf<T>()
/**
* 执行方法 - 指定 [List] 返回值类型 - 每项类型 [T]
*
* - ❗请确认目标方法的返回值 - 发生错误会返回空数组
* @return [List] 取不到返回空数组
*/
inline fun <reified T> list(vararg param: Any?) = invoke(*param) ?: listOf<T>()
override fun toString() =
"[${(memberInstance as? Method?)?.name ?: "<empty>"}] in [${instance?.javaClass?.name ?: "<empty>"}]"

View File

@@ -171,7 +171,15 @@ class HookParam(private val wrapper: HookParamWrapper) {
* 得到方法参数的实例对象 [T]
* @return [T] or null
*/
fun <T> of() = runCatching { args[index] as? T? }.getOrNull()
fun <T> cast() = runCatching { args[index] as? T? }.getOrNull()
/**
* 得到方法参数的实例对象 [Byte]
*
* - ❗请确认目标参数的类型 - 发生错误会返回 null
* @return [Byte] or null
*/
fun byte() = cast<Byte?>()
/**
* 得到方法参数的实例对象 [Int]
@@ -179,7 +187,7 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Int] 取不到返回 0
*/
fun ofInt() = of() ?: 0
fun int() = cast() ?: 0
/**
* 得到方法参数的实例对象 [Long]
@@ -187,7 +195,7 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Long] 取不到返回 0L
*/
fun ofLong() = of() ?: 0L
fun long() = cast() ?: 0L
/**
* 得到方法参数的实例对象 [Short]
@@ -195,7 +203,7 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Short] 取不到返回 0
*/
fun ofShort() = of<Short?>() ?: 0
fun short() = cast<Short?>() ?: 0
/**
* 得到方法参数的实例对象 [Double]
@@ -203,7 +211,7 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Double] 取不到返回 0.0
*/
fun ofDouble() = of() ?: 0.0
fun double() = cast() ?: 0.0
/**
* 得到方法参数的实例对象 [Float]
@@ -211,7 +219,7 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Float] 取不到返回 0f
*/
fun ofFloat() = of() ?: 0f
fun float() = cast() ?: 0f
/**
* 得到方法参数的实例对象 [String]
@@ -219,7 +227,15 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [String] 取不到返回 ""
*/
fun ofString() = of() ?: ""
fun string() = cast() ?: ""
/**
* 得到方法参数的实例对象 [Char]
*
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Char] 取不到返回 ' '
*/
fun char() = cast() ?: ' '
/**
* 得到方法参数的实例对象 [Boolean]
@@ -227,7 +243,23 @@ class HookParam(private val wrapper: HookParamWrapper) {
* - ❗请确认目标参数的类型 - 发生错误会返回默认值
* @return [Boolean] 取不到返回 false
*/
fun ofBoolean() = of() ?: false
fun boolean() = cast() ?: false
/**
* 得到方法参数的实例对象 [Array] - 每项类型 [T]
*
* - ❗请确认目标参数的类型 - 发生错误会返回空数组
* @return [Array] 取不到返回空数组
*/
inline fun <reified T> array() = cast() ?: arrayOf<T>()
/**
* 得到方法参数的实例对象 [List] - 每项类型 [T]
*
* - ❗请确认目标参数的类型 - 发生错误会返回空数组
* @return [List] 取不到返回空数组
*/
inline fun <reified T> list() = cast() ?: listOf<T>()
/**
* 设置方法参数的实例对象