我是靠谱客的博主 沉静鼠标,最近开发中收集的这篇文章主要介绍Java遍历实体类,实体类属性转换为url参数遍历Java实体类属性及值获取父类的属性及属性值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

遍历Java实体类属性及值

核心代码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger logger = LoggerFactory.getLogger(HcodeRepository.class);

/**
 * 
 * @Title: getPostParams
 * @Description: 将实体类clazz的属性转换为url参数
 * @param clazz	参数实体类
 * @return
 * String
 */
private String getPostParams(Object clazz) {
	Field[] fields = clazz.getClass().getDeclaredFields();

	StringBuilder requestURL = new StringBuilder();
	try {
		boolean flag = true;
		String property, value;
		for (int i = 0; i < fields.length; i++) {
			Field field = fields[i];
			// 允许访问私有变量
			field.setAccessible(true);

			// 属性名
			property = field.getName();
			// 属性值
			value = field.get(clazz).toString();

			System.out.println(property+":"+value);
		}
	} catch (Exception e) {
		logger.error("参数为:" + clazz.toString());
	}
	return requestURL.toString();
}

示例

将查询参数封装为url

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger logger = LoggerFactory.getLogger(HcodeRepository.class);
/**
 * 
 * @Title: getPostParams
 * @Description: 将实体类clazz的属性转换为url参数
 * @param clazz	参数实体类
 * @return
 * String
 */
private String getPostParams(Object clazz) {
	// 遍历属性类、属性值
	Field[] fields = clazz.getClass().getDeclaredFields();

	StringBuilder requestURL = new StringBuilder();
	try {
		boolean flag = true;
		String property, value;
		for (int i = 0; i < fields.length; i++) {
			Field field = fields[i];
			// 允许访问私有变量
			field.setAccessible(true);

			// 属性名
			property = field.getName();
			// 属性值
			value = field.get(clazz).toString();

			String params = property + "=" + value;
			if (flag) {
				requestURL.append(params);
				flag = false;
			} else {
				requestURL.append("&" + params);
			}
		}
	} catch (Exception e) {
		logger.error("URL参数为:" + clazz.toString());
	}
	return requestURL.toString();
}

获取父类的属性及属性值

注: 以下代码中使用Intellij IDEA并使用了lombok,可以使用get/set替代@Data注解;可以重写toString()方法替代@ToString注解;
可以使用构造方法,替代@AllArgsConstructor注解。

TextMailDTO父类


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;

/**
 * @ClassName TextMailDTO
 * @Description <br/> 文本邮件实体类
 * @Author Dew
 * @Date 2019/11/7 9:56
 * @Version 1.0
 **/
@Data
@ToString
@AllArgsConstructor
public class TextMailDTO {

	/**
	 * 主题
	 */
	private String subject;

	/**
	 * 文本内容
	 */
	private String text;

	/**
	 * 接收者邮箱
	 */
	private String receiver;
}

info子类

import lombok.Data;

/**
 * @ClassName Info
 * @Description <br/> 信息内容
 * @Author Dew
 * @Date 2019/12/3 10:03
 * @Version 1.0
 **/
@Data
public class Info extends TextMailDTO {

	private String description;

	public Info(String subject, String text, String receiver) {
		super(subject, text, receiver);
	}

	public Info(String subject, String text, String receiver, String description) {
		super(subject, text, receiver);
		this.description = description;
	}
}
  • 实现获取父类属性及属性值的方法代码块

	/**
	 *  获取父类的属性及属性值方法
	 */
	private String getAllFields(Object object) {

		Class clazz = object.getClass();

		List<Field> fieldList = new ArrayList<>();
		while (clazz != null) {
			Field[] fields = clazz.getDeclaredFields();
			fieldList.addAll(new ArrayList<>(Arrays.asList(fields)));
			clazz = clazz.getSuperclass();
		}

		StringBuilder requestURL = new StringBuilder();
		try {
			boolean flag = true;
			String property, value;
			for (int i = 0; i < fieldList.size(); i++) {
				Field field = fieldList.get(i);
				// 允许访问私有变量
				field.setAccessible(true);

				// 属性名
				property = field.getName();
				// 属性值
				value = field.get(object).toString();

				log.info(property + ":t {}", value);

			}

		} catch (Exception e) {
			log.error("参数为:t{}", clazz.toString());
		}
		return requestURL.toString();
	}

最后

以上就是沉静鼠标为你收集整理的Java遍历实体类,实体类属性转换为url参数遍历Java实体类属性及值获取父类的属性及属性值的全部内容,希望文章能够帮你解决Java遍历实体类,实体类属性转换为url参数遍历Java实体类属性及值获取父类的属性及属性值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部