java 写一个方法,把一个对象copy到一个LinkedHashMap,过滤掉值等于空或者空串的属性
时间: 2024-03-03 11:48:30 浏览: 145
集合类简介-Java项目实战精编
可以按照以下的代码来实现:
```java
public static <K, V> LinkedHashMap<K, V> copyFilterEmptyValuePropertiesToLinkedHashMap(Object obj) throws IllegalAccessException {
LinkedHashMap<K, V> map = new LinkedHashMap<>();
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(obj);
if (value != null && !"".equals(value)) {
map.put((K) field.getName(), (V) value);
}
}
return map;
}
```
这个方法使用了Java的反射机制,可以将一个对象中的属性值复制到一个LinkedHashMap中,并且只复制非空非空串的属性。具体实现过程是:
1. 创建一个LinkedHashMap对象,用于存储属性值;
2. 获取对象的类型信息;
3. 获取对象的所有属性;
4. 遍历属性,获取属性值,如果属性值非空非空串,则将属性名和属性值存入LinkedHashMap中;
5. 返回存储属性值的LinkedHashMap对象。
需要注意的是,这个方法中的类型参数<K, V>是泛型参数,因为LinkedHashMap可以存储任意类型的键值对,所以这里使用了泛型来表示键和值的类型。同时,为了保证代码的健壮性,我们还需要在方法签名中声明异常,以处理反射可能会抛出的IllegalAccessException异常。
阅读全文