修改遍历类型字段只限制一级,避免list对泛型对象的影响
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user