通过java反射获取任意对象的字段名及字段值

import java.lang.reflect.Field;

public class ReflectClass3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p = new Person(1, "ctl", true, ‘c‘, 2.0f, 2.0, 1L, (short) 1,
				(byte) 1);

		p.setId(0);
		p.setName("张三");
		p.setIsMen(true);
		p.setCh(‘c‘);
		p.setFloat_(2.0f);
		p.setDouble_(3.0);
		p.setLong_(2l);
		p.setShort_((short) 1);
		p.setByte_((byte) 2);
		reflect(p);
	}

	public static void reflect(Object obj) {
		if (obj == null)
			return;
		Field[] fields = obj.getClass().getDeclaredFields();
		String[] types1={"int","java.lang.String","boolean","char","float","double","long","short","byte"};
		String[] types2={"Integer","java.lang.String","java.lang.Boolean","java.lang.Character","java.lang.Float","java.lang.Double","java.lang.Long","java.lang.Short","java.lang.Byte"};
		for (int j = 0; j < fields.length; j++) {
			fields[j].setAccessible(true);
			// 字段名
		  System.out.print(fields[j].getName() + ":");
			// 字段值
			for(int i=0;i<types1.length;i++){
				if(fields[j].getType().getName()
						.equalsIgnoreCase(types1[i])|| fields[j].getType().getName().equalsIgnoreCase(types2[i])){
					try {
						System.out.print(fields[j].get(obj)+"     ");
					} catch (Exception e) {
						e.printStackTrace();
					} 
				}
			}
		}
	}
}

public class Person {
public int id;
public String name;
public boolean isMen;
public Character ch;
public Float float_;
public Double double_;
public Long long_;
public Short short_;
public Byte byte_;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public boolean getIsMen() {
	return isMen;
}
public void setIsMen(boolean isMen) {
	this.isMen = isMen;
}
public Character getCh() {
	return ch;
}
public void setCh(Character ch) {
	this.ch = ch;
}
public Float getFloat_() {
	return float_;
}
public void setFloat_(Float float_) {
	this.float_ = float_;
}
public Double getDouble_() {
	return double_;
}
public void setDouble_(Double double_) {
	this.double_ = double_;
}
public Long getLong_() {
	return long_;
}
public void setLong_(Long long_) {
	this.long_ = long_;
}
public Short getShort_() {
	return short_;
}
public void setShort_(Short short_) {
	this.short_ = short_;
}
public Byte getByte_() {
	return byte_;
}
public void setByte_(Byte byte_) {
	this.byte_ = byte_;
}
public Person(int id, String name, Boolean isMen, Character ch, Float float_,
		Double double_, Long long_, Short short_, Byte byte_) {
	super();
	this.id = id;
	this.name = name;
	this.isMen = isMen;
	this.ch = ch;
	this.float_ = float_;
	this.double_ = double_;
	this.long_ = long_;
	this.short_ = short_;
	this.byte_ = byte_;
	}

public Person() {
	super();
}
}

通过java反射获取任意对象的字段名及字段值,布布扣,bubuko.com

通过java反射获取任意对象的字段名及字段值

上一篇:python基础教程_学习笔记:序列-1


下一篇:Python全局变量和局部变量