修改遍历类型字段只限制一级,避免list对泛型对象的影响

This commit is contained in:
2020-05-23 18:12:08 +08:00
parent 8729724ed8
commit f0c69704ba
4 changed files with 11 additions and 31 deletions

View File

@@ -1,32 +1,12 @@
package com.synebula.gaea.extension
import java.lang.reflect.Field
import java.util.*
/**
* 系统类型
* 获取对象字段信息字符串列表。
*/
val SystemClasses = arrayOf(
"String",
"Date",
"Int",
"Double",
"Float",
"BigDecimal",
"Decimal")
/**
* 深度获取所有字段信息字符串列表。
* @param prefix 前缀字符串
*/
fun Class<*>.fields(prefix: String = ""): List<String> {
fun Class<*>.fieldNames(): List<String> {
val names = mutableListOf<String>()
this.declaredFields.forEach { field ->
val fullName = if (prefix.isNotEmpty()) "$prefix.${field.name}" else field.name
names.add(fullName)
if (!field.type.isPrimitive && !field.type.isArray && !SystemClasses.contains(field.type.simpleName)) {
names.addAll(field.type.fields(fullName))
}
names.add(field.name)
}
return names
}