将一个类的属性存入MAP中(key为属性名,value为属性值)

有时候需要将javaBean与Map互转,写个方法(只写了javaBean转为Map,Map转为javaBean比较简单),供大家参考


/**
	 * 获取obj中的所有方法
	 * @param obj
	 * @return
	 */
	public List getAllMethods(Object obj){
		List methods = new ArrayList();
		Class clazz = obj.getClass();
		while(!clazz.getName().equals("java.lang.Object")){
			methods.addAll(Arrays.asList(clazz.getDeclaredMethods()));
			clazz = clazz.getSuperclass();
		}
		return methods;
	}
	/**
	 * 将一个类用属性名为Key,值为Value的方式存入map
	 * @param obj
	 * @return
	 */
	public Map convert2Map(Object obj){
		Map map = new HashMap();
		List methods = getAllMethods(obj);
		for(Method m:methods){
			String methodName = m.getName();
			if(methodName.startsWith("get")){
				//获取属性名
				String propertyName = methodName.substring(3);
				try {
					map.put(propertyName,m.invoke(obj));
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					e.printStackTrace();
				}
			}
		}
		return map;
	}


你可能感兴趣的:(Java)