mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
ReflectUtil.getFieldsValue增加Filter重载
This commit is contained in:
parent
3f482e4eda
commit
bdf71b5e71
@ -248,14 +248,22 @@ public class FieldUtil {
|
|||||||
* @since 4.1.17
|
* @since 4.1.17
|
||||||
*/
|
*/
|
||||||
public static Object[] getFieldsValue(final Object obj) {
|
public static Object[] getFieldsValue(final Object obj) {
|
||||||
if (null != obj) {
|
return getFieldsValue(obj, null);
|
||||||
final Field[] fields = getFields(obj instanceof Class ? (Class<?>) obj : obj.getClass());
|
|
||||||
if (null != fields) {
|
|
||||||
final Object[] values = new Object[fields.length];
|
|
||||||
for (int i = 0; i < fields.length; i++) {
|
|
||||||
values[i] = getFieldValue(obj, fields[i]);
|
|
||||||
}
|
}
|
||||||
return values;
|
|
||||||
|
/**
|
||||||
|
* 获取所有字段的值
|
||||||
|
*
|
||||||
|
* @param obj bean对象,如果是static字段,此处为类class
|
||||||
|
* @param filter 字段过滤器,{@code null}返回原集合
|
||||||
|
* @return 字段值数组
|
||||||
|
* @since 5.8.23
|
||||||
|
*/
|
||||||
|
public static Object[] getFieldsValue(final Object obj, final Predicate<Field> filter) {
|
||||||
|
if (null != obj) {
|
||||||
|
final Field[] fields = getFields(obj instanceof Class ? (Class<?>) obj : obj.getClass(), filter);
|
||||||
|
if (null != fields) {
|
||||||
|
return ArrayUtil.map(fields, Object.class, field -> getFieldValue(obj, field));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.core.reflect;
|
package org.dromara.hutool.core.reflect;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -51,4 +52,33 @@ public class FieldUtilTest {
|
|||||||
final Field subField = FieldUtil.getField(ReflectUtilTest.TestSubClass.class, "subField");
|
final Field subField = FieldUtil.getField(ReflectUtilTest.TestSubClass.class, "subField");
|
||||||
Assertions.assertNotNull(subField);
|
Assertions.assertNotNull(subField);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getFieldsValueTest() {
|
||||||
|
final TestBean testBean = new TestBean();
|
||||||
|
testBean.setA("A");
|
||||||
|
testBean.setB(1);
|
||||||
|
|
||||||
|
final Object[] fieldsValue = FieldUtil.getFieldsValue(testBean);
|
||||||
|
Assertions.assertEquals(2, fieldsValue.length);
|
||||||
|
Assertions.assertEquals("A", fieldsValue[0]);
|
||||||
|
Assertions.assertEquals(1, fieldsValue[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getFieldsValueTest2() {
|
||||||
|
final TestBean testBean = new TestBean();
|
||||||
|
testBean.setA("A");
|
||||||
|
testBean.setB(1);
|
||||||
|
|
||||||
|
final Object[] fieldsValue = FieldUtil.getFieldsValue(testBean, (field -> field.getName().equals("a")));
|
||||||
|
Assertions.assertEquals(1, fieldsValue.length);
|
||||||
|
Assertions.assertEquals("A", fieldsValue[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
static class TestBean{
|
||||||
|
private String a;
|
||||||
|
private int b;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user