From 8b7de28e33a98829e6566f8c150072d23f33f1fe Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sun, 1 Oct 2023 23:00:35 +0800 Subject: [PATCH] refactor: merge HashSet, ArrayList to MutableList --- .../finder/classes/DexClassFinder.md | 16 ++++++++--- .../finder/members/ConstructorFinder.md | 26 +++++++++++++---- .../finder/members/FieldFinder.md | 26 +++++++++++++---- .../finder/members/MethodFinder.md | 26 +++++++++++++---- .../finder/classes/DexClassFinder.md | 16 ++++++++--- .../finder/members/ConstructorFinder.md | 26 +++++++++++++---- .../finder/members/FieldFinder.md | 26 +++++++++++++---- .../finder/members/MethodFinder.md | 26 +++++++++++++---- .../finder/base/ClassBaseFinder.kt | 2 +- .../finder/base/MemberBaseFinder.kt | 26 ++++++++--------- .../finder/classes/DexClassFinder.kt | 28 +++++++++---------- .../finder/members/ConstructorFinder.kt | 26 ++++++++--------- .../finder/members/FieldFinder.kt | 24 ++++++++-------- .../finder/members/MethodFinder.kt | 26 ++++++++--------- .../finder/tools/ReflectionTool.kt | 24 ++++++++-------- 15 files changed, 228 insertions(+), 116 deletions(-) diff --git a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md index 7c0885e..db02284 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md +++ b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md @@ -626,20 +626,24 @@ fun get(): Class<*>? ### all - method ```kotlin:no-line-numbers -fun all(): HashSet> +fun all(): MutableList> ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +返回值类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 得到 `Class` 本身数组。 返回全部查找条件匹配的多个 `Class` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 若你设置了 `async` 请使用 [waitAll](#waitall-method) 方法。 @@ -686,20 +690,24 @@ fun wait(result: (Class<*>?) -> Unit): Result ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(result: (HashSet>) -> Unit): Result +fun waitAll(result: (MutableList>) -> Unit): Result ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +`result` 类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 得到 `Class` 本身数组 (异步)。 回调全部查找条件匹配的多个 `Class` 实例。 -在查找条件找不到任何结果的时候将回调空的 `HashSet`。 +在查找条件找不到任何结果的时候将回调空的 `MutableList`。 你需要设置 `async` 后此方法才会被回调,否则请使用 [all](#all-method) 方法。 diff --git a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md index 60094cf..e10c666 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md +++ b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md @@ -267,13 +267,17 @@ inner class Result internal constructor() #### onFind - method ```kotlin:no-line-numbers -fun onFind(initiate: HashSet>.() -> Unit) +fun onFind(initiate: MutableList>.() -> Unit) ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +`initiate` 类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 当在 `RemedyPlan` 中找到结果时。 @@ -398,13 +402,17 @@ constructor { ### all - method ```kotlin:no-line-numbers -fun all(): ArrayList +fun all(): MutableList ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +返回值类型由 `ArrayList` 修改为 `MutableList` + **Function Illustrate** > 获得 `Constructor` 实例处理类数组。 @@ -446,20 +454,24 @@ fun give(): Constructor<*>? ### giveAll - method ```kotlin:no-line-numbers -fun giveAll(): HashSet> +fun giveAll(): MutableList> ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +返回值类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 得到 `Constructor` 本身数组。 返回全部查找条件匹配的多个 `Constructor` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 ### wait - method @@ -488,13 +500,17 @@ fun wait(initiate: Instance.() -> Unit) ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(initiate: ArrayList.() -> Unit) +fun waitAll(initiate: MutableList.() -> Unit) ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +`initiate` 类型由 `ArrayList` 修改为 `MutableList` + **Function Illustrate** > 获得 `Constructor` 实例处理类数组,配合 `RemedyPlan` 使用。 diff --git a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md index 4a2eb0b..fc44e15 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md +++ b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md @@ -253,13 +253,17 @@ inner class Result internal constructor() #### onFind - method ```kotlin:no-line-numbers -fun onFind(initiate: HashSet.() -> Unit) +fun onFind(initiate: MutableList.() -> Unit) ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +`initiate` 类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 当在 `RemedyPlan` 中找到结果时。 @@ -368,13 +372,17 @@ field { ### all - method ```kotlin:no-line-numbers -fun all(instance: Any?): ArrayList +fun all(instance: Any?): MutableList ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +返回值类型由 `ArrayList` 修改为 `MutableList` + **Function Illustrate** > 获得 `Field` 实例处理类数组。 @@ -416,20 +424,24 @@ fun give(): Field? ### giveAll - method ```kotlin:no-line-numbers -fun giveAll(): HashSet +fun giveAll(): MutableList ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +返回值类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 得到 `Field` 本身数组。 返回全部查找条件匹配的多个 `Field` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 ### wait - method @@ -458,13 +470,17 @@ fun wait(instance: Any?, initiate: Instance.() -> Unit) ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(instance: Any?, initiate: ArrayList.() -> Unit) +fun waitAll(instance: Any?, initiate: MutableList.() -> Unit) ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `modified` + +`initiate` 类型由 `ArrayList` 修改为 `MutableList` + **Function Illustrate** > 获得 `Field` 实例处理类数组,配合 `RemedyPlan` 使用。 diff --git a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md index 55d9064..eaf54ad 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md +++ b/docs-source/src/en/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md @@ -403,13 +403,17 @@ inner class Result internal constructor() #### onFind - method ```kotlin:no-line-numbers -fun onFind(initiate: HashSet.() -> Unit) +fun onFind(initiate: MutableList.() -> Unit) ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `修改` + +`initiate` 类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 当在 `RemedyPlan` 中找到结果时。 @@ -520,13 +524,17 @@ method { ### all - method ```kotlin:no-line-numbers -fun all(instance: Any?): ArrayList +fun all(instance: Any?): MutableList ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `修改` + +返回值类型由 `ArrayList` 修改为 `MutableList` + **Function Illustrate** > 获得 `Method` 实例处理类数组。 @@ -568,20 +576,24 @@ fun give(): Method? ### giveAll - method ```kotlin:no-line-numbers -fun giveAll(): HashSet +fun giveAll(): MutableList ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `修改` + +返回值类型由 `HashSet` 修改为 `MutableList` + **Function Illustrate** > 得到 `Method` 本身数组。 返回全部查找条件匹配的多个 `Method` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 ### wait - method @@ -610,13 +622,17 @@ fun wait(instance: Any?, initiate: Instance.() -> Unit) ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(instance: Any?, initiate: ArrayList.() -> Unit) +fun waitAll(instance: Any?, initiate: MutableList.() -> Unit) ``` **Change Records** `v1.0.0` `first` +`v1.0.3` `修改` + +`initiate` 类型由 `ArrayList` 修改为 `MutableList` + **Function Illustrate** > 获得 `Method` 实例处理类数组,配合 `RemedyPlan` 使用。 diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md index d0ee7cb..d02243d 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.md @@ -618,20 +618,24 @@ fun get(): Class<*>? ### all - method ```kotlin:no-line-numbers -fun all(): HashSet> +fun all(): MutableList> ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 得到 `Class` 本身数组。 返回全部查找条件匹配的多个 `Class` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 若你设置了 `async` 请使用 [waitAll](#waitall-method) 方法。 @@ -678,20 +682,24 @@ fun wait(result: (Class<*>?) -> Unit): Result ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(result: (HashSet>) -> Unit): Result +fun waitAll(result: (MutableList>) -> Unit): Result ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`result` 类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 得到 `Class` 本身数组 (异步)。 回调全部查找条件匹配的多个 `Class` 实例。 -在查找条件找不到任何结果的时候将回调空的 `HashSet`。 +在查找条件找不到任何结果的时候将回调空的 `MutableList`。 你需要设置 `async` 后此方法才会被回调,否则请使用 [all](#all-method) 方法。 diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md index 83655a9..cbf81b3 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.md @@ -259,13 +259,17 @@ inner class Result internal constructor() #### onFind - method ```kotlin:no-line-numbers -fun onFind(initiate: HashSet>.() -> Unit) +fun onFind(initiate: MutableList>.() -> Unit) ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`initiate` 类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 当在 `RemedyPlan` 中找到结果时。 @@ -390,13 +394,17 @@ constructor { ### all - method ```kotlin:no-line-numbers -fun all(): ArrayList +fun all(): MutableList ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `ArrayList` 修改为 `MutableList` + **功能描述** > 获得 `Constructor` 实例处理类数组。 @@ -438,20 +446,24 @@ fun give(): Constructor<*>? ### giveAll - method ```kotlin:no-line-numbers -fun giveAll(): HashSet> +fun giveAll(): MutableList> ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 得到 `Constructor` 本身数组。 返回全部查找条件匹配的多个 `Constructor` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 ### wait - method @@ -480,13 +492,17 @@ fun wait(initiate: Instance.() -> Unit) ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(initiate: ArrayList.() -> Unit) +fun waitAll(initiate: MutableList.() -> Unit) ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`initiate` 类型由 `ArrayList` 修改为 `MutableList` + **功能描述** > 获得 `Constructor` 实例处理类数组,配合 `RemedyPlan` 使用。 diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md index 3075521..e340826 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.md @@ -245,13 +245,17 @@ inner class Result internal constructor() #### onFind - method ```kotlin:no-line-numbers -fun onFind(initiate: HashSet.() -> Unit) +fun onFind(initiate: MutableList.() -> Unit) ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`initiate` 类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 当在 `RemedyPlan` 中找到结果时。 @@ -360,13 +364,17 @@ field { ### all - method ```kotlin:no-line-numbers -fun all(instance: Any?): ArrayList +fun all(instance: Any?): MutableList ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `ArrayList` 修改为 `MutableList` + **功能描述** > 获得 `Field` 实例处理类数组。 @@ -408,20 +416,24 @@ fun give(): Field? ### giveAll - method ```kotlin:no-line-numbers -fun giveAll(): HashSet +fun giveAll(): MutableList ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 得到 `Field` 本身数组。 返回全部查找条件匹配的多个 `Field` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 ### wait - method @@ -450,13 +462,17 @@ fun wait(instance: Any?, initiate: Instance.() -> Unit) ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(instance: Any?, initiate: ArrayList.() -> Unit) +fun waitAll(instance: Any?, initiate: MutableList.() -> Unit) ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`initiate` 类型由 `ArrayList` 修改为 `MutableList` + **功能描述** > 获得 `Field` 实例处理类数组,配合 `RemedyPlan` 使用。 diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md index 6f93875..9dbe608 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.md @@ -395,13 +395,17 @@ inner class Result internal constructor() #### onFind - method ```kotlin:no-line-numbers -fun onFind(initiate: HashSet.() -> Unit) +fun onFind(initiate: MutableList.() -> Unit) ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`initiate` 类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 当在 `RemedyPlan` 中找到结果时。 @@ -512,13 +516,17 @@ method { ### all - method ```kotlin:no-line-numbers -fun all(instance: Any?): ArrayList +fun all(instance: Any?): MutableList ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `ArrayList` 修改为 `MutableList` + **功能描述** > 获得 `Method` 实例处理类数组。 @@ -560,20 +568,24 @@ fun give(): Method? ### giveAll - method ```kotlin:no-line-numbers -fun giveAll(): HashSet +fun giveAll(): MutableList ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +返回值类型由 `HashSet` 修改为 `MutableList` + **功能描述** > 得到 `Method` 本身数组。 返回全部查找条件匹配的多个 `Method` 实例。 -在查找条件找不到任何结果的时候将返回空的 `HashSet`。 +在查找条件找不到任何结果的时候将返回空的 `MutableList`。 ### wait - method @@ -602,13 +614,17 @@ fun wait(instance: Any?, initiate: Instance.() -> Unit) ### waitAll - method ```kotlin:no-line-numbers -fun waitAll(instance: Any?, initiate: ArrayList.() -> Unit) +fun waitAll(instance: Any?, initiate: MutableList.() -> Unit) ``` **变更记录** `v1.0.0` `添加` +`v1.0.3` `修改` + +`initiate` 类型由 `ArrayList` 修改为 `MutableList` + **功能描述** > 获得 `Method` 实例处理类数组,配合 `RemedyPlan` 使用。 diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt index 530953b..3ffc5dc 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt @@ -44,7 +44,7 @@ abstract class ClassBaseFinder internal constructor(internal open val loaderSet: } /** 当前找到的 [Class] 数组 */ - internal var classInstances = HashSet>() + internal var classInstances = mutableListOf>() /** 是否开启忽略错误警告功能 */ internal var isIgnoreErrorLogs = false diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt index e8b5c47..5271039 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt @@ -58,28 +58,28 @@ abstract class MemberBaseFinder internal constructor(private val tag: String, in internal var isIgnoreErrorLogs = false /** 当前找到的 [Member] 数组 */ - internal var memberInstances = HashSet() + internal var memberInstances = mutableListOf() /** - * 将 [HashSet]<[Member]> 转换为 [HashSet]<[Field]> - * @return [HashSet]<[Field]> + * 将 [MutableList]<[Member]> 转换为 [MutableList]<[Field]> + * @return [MutableList]<[Field]> */ - internal fun HashSet.fields() = - hashSetOf().also { takeIf { e -> e.isNotEmpty() }?.forEach { e -> (e as? Field?)?.also { f -> it.add(f) } } } + internal fun MutableList.fields() = + mutableListOf().also { takeIf { e -> e.isNotEmpty() }?.forEach { e -> (e as? Field?)?.also { f -> it.add(f) } } } /** - * 将 [HashSet]<[Member]> 转换为 [HashSet]<[Method]> - * @return [HashSet]<[Method]> + * 将 [MutableList]<[Member]> 转换为 [MutableList]<[Method]> + * @return [MutableList]<[Method]> */ - internal fun HashSet.methods() = - hashSetOf().also { takeIf { e -> e.isNotEmpty() }?.forEach { e -> (e as? Method?)?.also { m -> it.add(m) } } } + internal fun MutableList.methods() = + mutableListOf().also { takeIf { e -> e.isNotEmpty() }?.forEach { e -> (e as? Method?)?.also { m -> it.add(m) } } } /** - * 将 [HashSet]<[Member]> 转换为 [HashSet]<[Constructor]> - * @return [HashSet]<[Constructor]> + * 将 [MutableList]<[Member]> 转换为 [MutableList]<[Constructor]> + * @return [MutableList]<[Constructor]> */ - internal fun HashSet.constructors() = - hashSetOf>().also { takeIf { e -> e.isNotEmpty() }?.forEach { e -> (e as? Constructor<*>?)?.also { c -> it.add(c) } } } + internal fun MutableList.constructors() = + mutableListOf>().also { takeIf { e -> e.isNotEmpty() }?.forEach { e -> (e as? Constructor<*>?)?.also { c -> it.add(c) } } } /** * 将目标类型转换为可识别的兼容类型 diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt index 6a297c5..b57b45d 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt @@ -427,27 +427,27 @@ class DexClassFinder internal constructor( /** * 得到 [Class] 或一组 [Class] - * @return [HashSet]<[Class]> + * @return [MutableList]<[Class]> * @throws NoClassDefFoundError 如果找不到 [Class] */ private val result get() = ReflectionTool.findClasses(loaderSet, rulesData) /** * 从本地缓存读取 [Class] 数据 - * @return [HashSet]<[Class]> + * @return [MutableList]<[Class]> */ - private fun readFromCache(): HashSet> = - if (async && name.isNotBlank()) hashSetOf>().also { classes -> + private fun readFromCache(): MutableList> = + if (async && name.isNotBlank()) mutableListOf>().also { classes -> context?.currentSp()?.getStringSet(name, emptySet())?.takeIf { it.isNotEmpty() } ?.forEach { className -> if (className.hasClass(loaderSet)) classes.add(className.toClass(loaderSet)) } - } else hashSetOf() + } else mutableListOf() /** * 将当前 [Class] 数组名称保存到本地缓存 * @throws IllegalStateException 如果当前包名为 "android" */ - private fun HashSet>.saveToCache() { - if (name.isNotBlank() && isNotEmpty()) hashSetOf().also { names -> + private fun MutableList>.saveToCache() { + if (name.isNotBlank() && isNotEmpty()) mutableSetOf().also { names -> takeIf { it.isNotEmpty() }?.forEach { names.add(it.name) } context?.also { if (it.packageName == "android") error("Cannot create classes cache for \"android\", please remove \"name\" param") @@ -460,7 +460,7 @@ class DexClassFinder internal constructor( * 设置实例 * @param classes 当前找到的 [Class] 数组 */ - private fun setInstance(classes: HashSet>) { + private fun setInstance(classes: MutableList>) { classInstances.clear() classes.takeIf { it.isNotEmpty() }?.forEach { classInstances.add(it) } } @@ -505,7 +505,7 @@ class DexClassFinder internal constructor( internal var waitResultCallback: ((Class<*>?) -> Unit)? = null /** 异步方法体回调数组结果 */ - internal var waitAllResultCallback: ((HashSet>) -> Unit)? = null + internal var waitAllResultCallback: ((MutableList>) -> Unit)? = null /** 异常结果重新回调方法体 */ internal var noClassDefFoundErrorCallback: (() -> Unit)? = null @@ -534,10 +534,10 @@ class DexClassFinder internal constructor( * * - 返回全部查找条件匹配的多个 [Class] 实例 * - * - 在查找条件找不到任何结果的时候将返回空的 [HashSet] + * - 在查找条件找不到任何结果的时候将返回空的 [MutableList] * * - 若你设置了 [async] 请使用 [waitAll] 方法 - * @return [HashSet]<[Class]> + * @return [MutableList]<[Class]> */ fun all() = classInstances @@ -578,13 +578,13 @@ class DexClassFinder internal constructor( * * - 回调全部查找条件匹配的多个 [Class] 实例 * - * - 在查找条件找不到任何结果的时候将回调空的 [HashSet] + * - 在查找条件找不到任何结果的时候将回调空的 [MutableList] * * - 你需要设置 [async] 后此方法才会被回调 - 否则请使用 [all] 方法 - * @param result 回调 - ([HashSet]<[Class]>) + * @param result 回调 - ([MutableList]<[Class]>) * @return [Result] 可继续向下监听 */ - fun waitAll(result: (HashSet>) -> Unit): Result { + fun waitAll(result: (MutableList>) -> Unit): Result { waitAllResultCallback = result return this } diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt index e5558e5..9f68822 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt @@ -40,9 +40,9 @@ import com.highcapable.yukireflection.finder.type.factory.ConstructorConditions import com.highcapable.yukireflection.finder.type.factory.CountConditions import com.highcapable.yukireflection.finder.type.factory.ModifierConditions import com.highcapable.yukireflection.finder.type.factory.ObjectsConditions +import com.highcapable.yukireflection.log.YLog import com.highcapable.yukireflection.type.defined.UndefinedType import com.highcapable.yukireflection.type.defined.VagueType -import com.highcapable.yukireflection.log.YLog import com.highcapable.yukireflection.utils.factory.runBlocking import java.lang.reflect.Constructor @@ -225,7 +225,7 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = /** * 得到 [Constructor] 或一组 [Constructor] - * @return [HashSet]<[Constructor]> + * @return [MutableList]<[Constructor]> * @throws NoSuchMethodError 如果找不到 [Constructor] */ private val result by lazy { ReflectionTool.findConstructors(usedClassSet, rulesData) } @@ -234,7 +234,7 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = * 设置实例 * @param constructors 当前找到的 [Constructor] 数组 */ - private fun setInstance(constructors: HashSet>) { + private fun setInstance(constructors: MutableList>) { memberInstances.clear() constructors.takeIf { it.isNotEmpty() }?.forEach { memberInstances.add(it) } } @@ -267,7 +267,7 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = inner class RemedyPlan internal constructor() { /** 失败尝试次数数组 */ - private val remedyPlans = HashSet>() + private val remedyPlans = mutableSetOf>() /** * 创建需要重新查找的 [Constructor] @@ -315,13 +315,13 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = inner class Result internal constructor() { /** 找到结果时的回调 */ - internal var onFindCallback: (HashSet>.() -> Unit)? = null + internal var onFindCallback: (MutableList>.() -> Unit)? = null /** * 当找到结果时 * @param initiate 回调 */ - fun onFind(initiate: HashSet>.() -> Unit) { + fun onFind(initiate: MutableList>.() -> Unit) { onFindCallback = initiate } } @@ -364,9 +364,9 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = * - 在 [memberInstances] 结果为空时使用此方法将无法获得对象 * * - 若你设置了 [remedys] 请使用 [waitAll] 回调结果方法 - * @return [ArrayList]<[Instance]> + * @return [MutableList]<[Instance]> */ - fun all() = arrayListOf().apply { giveAll().takeIf { it.isNotEmpty() }?.forEach { add(Instance(it)) } } + fun all() = mutableListOf().apply { giveAll().takeIf { it.isNotEmpty() }?.forEach { add(Instance(it)) } } /** * 得到 [Constructor] 本身 @@ -383,10 +383,10 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = * * - 返回全部查找条件匹配的多个 [Constructor] 实例 * - * - 在查找条件找不到任何结果的时候将返回空的 [HashSet] - * @return [HashSet]<[Constructor]> + * - 在查找条件找不到任何结果的时候将返回空的 [MutableList] + * @return [MutableList]<[Constructor]> */ - fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.constructors() ?: HashSet() + fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.constructors() ?: mutableListOf() /** * 获得 [Constructor] 实例处理类 @@ -411,9 +411,9 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = * - 若你设置了 [remedys] 必须使用此方法才能获得结果 * * - 若你没有设置 [remedys] 此方法将不会被回调 - * @param initiate 回调 [ArrayList]<[Instance]> + * @param initiate 回调 [MutableList]<[Instance]> */ - fun waitAll(initiate: ArrayList.() -> Unit) { + fun waitAll(initiate: MutableList.() -> Unit) { if (memberInstances.isNotEmpty()) initiate(all()) else remedyPlansCallback = { initiate(all()) } } diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/FieldFinder.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/FieldFinder.kt index da9ad29..0530cd9 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/FieldFinder.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/FieldFinder.kt @@ -183,7 +183,7 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) /** * 得到 [Field] 或一组 [Field] - * @return [HashSet]<[Field]> + * @return [MutableList]<[Field]> * @throws NoSuchFieldError 如果找不到 [Field] */ private val result get() = ReflectionTool.findFields(usedClassSet, rulesData) @@ -192,7 +192,7 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) * 设置实例 * @param fields 当前找到的 [Field] 数组 */ - private fun setInstance(fields: HashSet) { + private fun setInstance(fields: MutableList) { memberInstances.clear() fields.takeIf { it.isNotEmpty() }?.forEach { memberInstances.add(it) } } @@ -225,7 +225,7 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) inner class RemedyPlan internal constructor() { /** 失败尝试次数数组 */ - private val remedyPlans = HashSet>() + private val remedyPlans = mutableSetOf>() /** * 创建需要重新查找的 [Field] @@ -273,13 +273,13 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) inner class Result internal constructor() { /** 找到结果时的回调 */ - internal var onFindCallback: (HashSet.() -> Unit)? = null + internal var onFindCallback: (MutableList.() -> Unit)? = null /** * 当找到结果时 * @param initiate 回调 */ - fun onFind(initiate: HashSet.() -> Unit) { + fun onFind(initiate: MutableList.() -> Unit) { onFindCallback = initiate } } @@ -329,10 +329,10 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) * * - 若你设置了 [remedys] 请使用 [waitAll] 回调结果方法 * @param instance [Field] 所在的实例对象 - 如果是静态可不填 - 默认 null - * @return [ArrayList]<[Instance]> + * @return [MutableList]<[Instance]> */ fun all(instance: Any? = null) = - arrayListOf().apply { giveAll().takeIf { it.isNotEmpty() }?.forEach { add(Instance(instance, it)) } } + mutableListOf().apply { giveAll().takeIf { it.isNotEmpty() }?.forEach { add(Instance(instance, it)) } } /** * 得到 [Field] 本身 @@ -349,10 +349,10 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) * * - 返回全部查找条件匹配的多个 [Field] 实例 * - * - 在查找条件找不到任何结果的时候将返回空的 [HashSet] - * @return [HashSet]<[Field]> + * - 在查找条件找不到任何结果的时候将返回空的 [MutableList] + * @return [MutableList]<[Field]> */ - fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.fields() ?: HashSet() + fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.fields() ?: mutableListOf() /** * 获得 [Field] 实例处理类 @@ -379,9 +379,9 @@ class FieldFinder internal constructor(override val classSet: Class<*>? = null) * * - 若你没有设置 [remedys] 此方法将不会被回调 * @param instance 所在实例 - * @param initiate 回调 [ArrayList]<[Instance]> + * @param initiate 回调 [MutableList]<[Instance]> */ - fun waitAll(instance: Any? = null, initiate: ArrayList.() -> Unit) { + fun waitAll(instance: Any? = null, initiate: MutableList.() -> Unit) { if (memberInstances.isNotEmpty()) initiate(all(instance)) else remedyPlansCallback = { initiate(all(instance)) } } diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/MethodFinder.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/MethodFinder.kt index f1c606c..02b220e 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/MethodFinder.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/members/MethodFinder.kt @@ -42,9 +42,9 @@ import com.highcapable.yukireflection.finder.type.factory.ModifierConditions import com.highcapable.yukireflection.finder.type.factory.NameConditions import com.highcapable.yukireflection.finder.type.factory.ObjectConditions import com.highcapable.yukireflection.finder.type.factory.ObjectsConditions +import com.highcapable.yukireflection.log.YLog import com.highcapable.yukireflection.type.defined.UndefinedType import com.highcapable.yukireflection.type.defined.VagueType -import com.highcapable.yukireflection.log.YLog import com.highcapable.yukireflection.utils.factory.runBlocking import java.lang.reflect.Method @@ -317,7 +317,7 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) /** * 得到 [Method] 或一组 [Method] - * @return [HashSet]<[Method]> + * @return [MutableList]<[Method]> * @throws NoSuchMethodError 如果找不到 [Method] */ private val result get() = ReflectionTool.findMethods(usedClassSet, rulesData) @@ -326,7 +326,7 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) * 设置实例 * @param methods 当前找到的 [Method] 数组 */ - private fun setInstance(methods: HashSet) { + private fun setInstance(methods: MutableList) { memberInstances.clear() methods.takeIf { it.isNotEmpty() }?.forEach { memberInstances.add(it) } } @@ -359,7 +359,7 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) inner class RemedyPlan internal constructor() { /** 失败尝试次数数组 */ - private val remedyPlans = HashSet>() + private val remedyPlans = mutableListOf>() /** * 创建需要重新查找的 [Method] @@ -407,13 +407,13 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) inner class Result internal constructor() { /** 找到结果时的回调 */ - internal var onFindCallback: (HashSet.() -> Unit)? = null + internal var onFindCallback: (MutableList.() -> Unit)? = null /** * 当找到结果时 * @param initiate 回调 */ - fun onFind(initiate: HashSet.() -> Unit) { + fun onFind(initiate: MutableList.() -> Unit) { onFindCallback = initiate } } @@ -458,10 +458,10 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) * * - 若你设置了 [remedys] 请使用 [waitAll] 回调结果方法 * @param instance 所在实例 - * @return [ArrayList]<[Instance]> + * @return [MutableList]<[Instance]> */ fun all(instance: Any? = null) = - arrayListOf().apply { giveAll().takeIf { it.isNotEmpty() }?.forEach { add(Instance(instance, it)) } } + mutableListOf().apply { giveAll().takeIf { it.isNotEmpty() }?.forEach { add(Instance(instance, it)) } } /** * 得到 [Method] 本身 @@ -478,10 +478,10 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) * * - 返回全部查找条件匹配的多个 [Method] 实例 * - * - 在查找条件找不到任何结果的时候将返回空的 [HashSet] - * @return [HashSet]<[Method]> + * - 在查找条件找不到任何结果的时候将返回空的 [MutableList] + * @return [MutableList]<[Method]> */ - fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.methods() ?: HashSet() + fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.methods() ?: mutableListOf() /** * 获得 [Method] 实例处理类 @@ -508,9 +508,9 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) * * - 若你没有设置 [remedys] 此方法将不会被回调 * @param instance 所在实例 - * @param initiate 回调 [ArrayList]<[Instance]> + * @param initiate 回调 [MutableList]<[Instance]> */ - fun waitAll(instance: Any? = null, initiate: ArrayList.() -> Unit) { + fun waitAll(instance: Any? = null, initiate: MutableList.() -> Unit) { if (memberInstances.isNotEmpty()) initiate(all(instance)) else remedyPlansCallback = { initiate(all(instance)) } } diff --git a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt index 0c09b06..e372016 100644 --- a/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt +++ b/yukireflection-core/src/main/java/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt @@ -43,13 +43,13 @@ import com.highcapable.yukireflection.finder.members.data.ConstructorRulesData import com.highcapable.yukireflection.finder.members.data.FieldRulesData import com.highcapable.yukireflection.finder.members.data.MemberRulesData import com.highcapable.yukireflection.finder.members.data.MethodRulesData +import com.highcapable.yukireflection.log.YLog import com.highcapable.yukireflection.type.defined.UndefinedType import com.highcapable.yukireflection.type.defined.VagueType import com.highcapable.yukireflection.type.java.DalvikBaseDexClassLoader import com.highcapable.yukireflection.type.java.NoClassDefFoundErrorClass import com.highcapable.yukireflection.type.java.NoSuchFieldErrorClass import com.highcapable.yukireflection.type.java.NoSuchMethodErrorClass -import com.highcapable.yukireflection.log.YLog import com.highcapable.yukireflection.utils.factory.conditions import com.highcapable.yukireflection.utils.factory.findLastIndex import com.highcapable.yukireflection.utils.factory.lastIndex @@ -151,12 +151,12 @@ internal object ReflectionTool { * 查找任意 [Class] 或一组 [Class] * @param loaderSet 类所在 [ClassLoader] * @param rulesData 规则查找数据 - * @return [HashSet]<[Class]> + * @return [MutableList]<[Class]> * @throws IllegalStateException 如果 [loaderSet] 为 null 或未设置任何条件 * @throws NoClassDefFoundError 如果找不到 [Class] */ internal fun findClasses(loaderSet: ClassLoader?, rulesData: ClassRulesData) = rulesData.createResult { - hashSetOf>().also { classes -> + mutableListOf>().also { classes -> /** * 开始查找作业 * @param instance 当前 [Class] 实例 @@ -294,14 +294,14 @@ internal object ReflectionTool { * 查找任意 [Field] 或一组 [Field] * @param classSet [Field] 所在类 * @param rulesData 规则查找数据 - * @return [HashSet]<[Field]> + * @return [MutableList]<[Field]> * @throws IllegalStateException 如果未设置任何条件或 [FieldRulesData.type] 目标类不存在 * @throws NoSuchFieldError 如果找不到 [Field] */ internal fun findFields(classSet: Class<*>?, rulesData: FieldRulesData) = rulesData.createResult { if (type == UndefinedType) error("Field match type class is not found") - if (classSet == null) return@createResult hashSetOf() - hashSetOf().also { fields -> + if (classSet == null) return@createResult mutableListOf() + mutableListOf().also { fields -> classSet.existFields?.also { declares -> var iType = -1 var iName = -1 @@ -357,16 +357,16 @@ internal object ReflectionTool { * 查找任意 [Method] 或一组 [Method] * @param classSet [Method] 所在类 * @param rulesData 规则查找数据 - * @return [HashSet]<[Method]> + * @return [MutableList]<[Method]> * @throws IllegalStateException 如果未设置任何条件或 [MethodRulesData.paramTypes] 以及 [MethodRulesData.returnType] 目标类不存在 * @throws NoSuchMethodError 如果找不到 [Method] */ internal fun findMethods(classSet: Class<*>?, rulesData: MethodRulesData) = rulesData.createResult { if (returnType == UndefinedType) error("Method match returnType class is not found") - if (classSet == null) return@createResult hashSetOf() + if (classSet == null) return@createResult mutableListOf() paramTypes?.takeIf { it.isNotEmpty() } ?.forEachIndexed { p, it -> if (it == UndefinedType) error("Method match paramType[$p] class is not found") } - hashSetOf().also { methods -> + mutableListOf().also { methods -> classSet.existMethods?.also { declares -> var iReturnType = -1 var iReturnTypeCds = -1 @@ -468,15 +468,15 @@ internal object ReflectionTool { * 查找任意 [Constructor] 或一组 [Constructor] * @param classSet [Constructor] 所在类 * @param rulesData 规则查找数据 - * @return [HashSet]<[Constructor]> + * @return [MutableList]<[Constructor]> * @throws IllegalStateException 如果未设置任何条件或 [ConstructorRulesData.paramTypes] 目标类不存在 * @throws NoSuchMethodError 如果找不到 [Constructor] */ internal fun findConstructors(classSet: Class<*>?, rulesData: ConstructorRulesData) = rulesData.createResult { - if (classSet == null) return@createResult hashSetOf() + if (classSet == null) return@createResult mutableListOf() paramTypes?.takeIf { it.isNotEmpty() } ?.forEachIndexed { p, it -> if (it == UndefinedType) error("Constructor match paramType[$p] class is not found") } - hashSetOf>().also { constructors -> + mutableListOf>().also { constructors -> classSet.existConstructors?.also { declares -> var iParamTypes = -1 var iParamTypesCds = -1