1. 程式人生 > >將一個類的屬性存入MAP中(key為屬性名,value為屬性值)

將一個類的屬性存入MAP中(key為屬性名,value為屬性值)

有時候需要將javaBean與Map互轉,寫個方法(只寫了javaBean轉為Map,Map轉為javaBean比較簡單),供大家參考

/**
	 * 獲取obj中的所有方法
	 * @param obj
	 * @return
	 */
	public List<Method> getAllMethods(Object obj){
		List<Method> methods = new ArrayList<Method>();
		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<String,Object> convert2Map(Object obj){
		Map<String,Object> map = new HashMap<String,Object>();
		List<Method> 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;
	}