Java如何基于反射获取对象属性信息
先建立一个类,有四种属性:
privateintid;
privateStringname;
privatebyteby;
privateshortst;
以下方法,创建一个对象,然后打印该对象的属性名字,属性值,和属性的类型:
publicclassT{
	publicstaticvoidmain(String[]args)throwsException{
		Useru=newUser();
		u.setId(1);
		u.setName("cc");
		u.setBy((byte)1);
		u.setSt((short)2);
		getProperty(u);
	}
	/**
	*获得一个对象各个属性的字节流
	*/
	@SuppressWarnings("unchecked")
	publicstaticvoidgetProperty(ObjectentityName)throwsException{
		Classc=entityName.getClass();
		Fieldfield[]=c.getDeclaredFields();
		for(Fieldf:field){
			Objectv=invokeMethod(entityName,f.getName(),null);
			System.out.println(f.getName()+"\t"+v+"\t"+f.getType());
		}
	}
	/**
	*获得对象属性的值
	*/
	@SuppressWarnings("unchecked")
	privatestaticObjectinvokeMethod(Objectowner,StringmethodName,
			Object[]args)throwsException{
		ClassownerClass=owner.getClass();
		methodName=methodName.substring(0,1).toUpperCase()
				+methodName.substring(1);
		Methodmethod=null;
		try{
			method=ownerClass.getMethod("get"+methodName);
		}catch(SecurityExceptione){
		}catch(NoSuchMethodExceptione){
			return"can'tfind'get"+methodName+"'method";
		}
		returnmethod.invoke(owner);
	}
}
打印结果如下:
id1int
nameccclassjava.lang.String
by1byte
st2short
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
