/**
* 根据属性名获取属性值
* get后的字母必须是大写字母的方法 getUId (uId)
*/
public static Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[]{});
Object value = method.invoke(o, new Object[]{});
return value;
} catch (Exception e) {
return null;
}
}
Field[] fields = o.getClass().getDeclaredFields();//获取所有属性(public、protected、default、private),但不包括父类属性
Field[] fields = o.getClass().getFields();//获取类的属性(public),包括父类
//获取类的所有属性(public、protected、default、private),包括父类的属性
public static Field[] getAllFields(final Class<?> cls) {
final List<Field> allFieldsList = getAllFieldsList(cls);
return allFieldsList.toArray(new Field[allFieldsList.size()]);
}
public static List<Field> getAllFieldsList(final Class<?> cls) {
final List<Field> allFields = new ArrayList<Field>();
Class<?> currentClass = cls;
while (currentClass != null) {
final Field[] declaredFields = currentClass.getDeclaredFields();
for (final Field field : declaredFields) {
allFields.add(field);
}
currentClass = currentClass.getSuperclass();
}
return allFields;
}
/**
* 拼接键值对
*
* @param key
* @param value
* @param isEncode
* @return
*/
private static String buildKeyValue(String key, String value, boolean isEncode) {
StringBuilder sb = new StringBuilder();
sb.append(key);
sb.append("=");
if (isEncode) {
try {
sb.append(URLEncoder.encode(value, "UTF-8"));
} catch (UnsupportedEncodingException e) {
sb.append(value);
}
} else {
sb.append(value);
}
return sb.toString();
}
/**
*
*/
private static String map2String(Map<String, String> map) {
if (map == null || map.size() == 0) {
return "";
}
List<String> keys = new ArrayList<String>(map.keySet());
// key ASCII码从小到大排序
Collections.sort(keys);
// 至少一个
StringBuilder stringSb = new StringBuilder();
for (int i = 0; i < keys.size() - 1; i++) {
String key = keys.get(i);
String value = map.get(key);
stringSb .append(buildKeyValue(key, value, false));
stringSb .append("&");
}
String tailKey = keys.get(keys.size() - 1);
String tailValue = map.get(tailKey);
stringSb .append(buildKeyValue(tailKey, tailValue, false));
//LogUtil.e("parament stringSb :", stringSb .toString());
return stringSb .toString();
}