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
|
||||
*/
|
||||
public static Object[] getFieldsValue(final Object obj) {
|
||||
return getFieldsValue(obj, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有字段的值
|
||||
*
|
||||
* @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());
|
||||
final Field[] fields = getFields(obj instanceof Class ? (Class<?>) obj : obj.getClass(), filter);
|
||||
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;
|
||||
return ArrayUtil.map(fields, Object.class, field -> getFieldValue(obj, field));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package org.dromara.hutool.core.reflect;
|
||||
|
||||
import lombok.Data;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@ -51,4 +52,33 @@ public class FieldUtilTest {
|
||||
final Field subField = FieldUtil.getField(ReflectUtilTest.TestSubClass.class, "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