Java如何基于反射獲取對(duì)象屬性信息
先建立一個(gè)類(lèi),有四種屬性:
private int id;
private String name;
private byte by;
private short st;
以下方法,創(chuàng)建一個(gè)對(duì)象,然后打印該對(duì)象的屬性名字,屬性值,和屬性的類(lèi)型:
public class T {
public static void main(String[] args) throws Exception {
User u = new User();
u.setId(1);
u.setName("cc");
u.setBy((byte)1);
u.setSt((short)2);
getProperty(u);
}
/**
* 獲得一個(gè)對(duì)象各個(gè)屬性的字節(jié)流
*/
@SuppressWarnings("unchecked")
public static void getProperty(Object entityName) throws Exception {
Class c = entityName.getClass();
Field field[] = c.getDeclaredFields();
for (Field f : field) {
Object v = invokeMethod(entityName, f.getName(), null);
System.out.println(f.getName() + "\t" + v + "\t" + f.getType());
}
}
/**
* 獲得對(duì)象屬性的值
*/
@SuppressWarnings("unchecked")
private static Object invokeMethod(Object owner, String methodName,
Object[] args) throws Exception {
Class ownerClass = owner.getClass();
methodName = methodName.substring(0, 1).toUpperCase()
+ methodName.substring(1);
Method method = null;
try {
method = ownerClass.getMethod("get" + methodName);
} catch (SecurityException e) {
} catch (NoSuchMethodException e) {
return " can't find 'get" + methodName + "' method";
}
return method.invoke(owner);
}
}
打印結(jié)果如下:
id 1 int
name cc class java.lang.String
by 1 byte
st 2 short
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot內(nèi)置的tomcat支持最大的并發(fā)量問(wèn)題
這篇文章主要介紹了springboot內(nèi)置的tomcat支持最大的并發(fā)量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Javaweb監(jiān)聽(tīng)器實(shí)例之統(tǒng)計(jì)在線(xiàn)人數(shù)
這篇文章主要為大家詳細(xì)介紹了Javaweb監(jiān)聽(tīng)器實(shí)例之統(tǒng)計(jì)在線(xiàn)人數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
Java的Socket實(shí)現(xiàn)長(zhǎng)連接以及數(shù)據(jù)的發(fā)送和接收方式
這篇文章主要介紹了Java的Socket實(shí)現(xiàn)長(zhǎng)連接以及數(shù)據(jù)的發(fā)送和接收方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
基于javamelody監(jiān)控springboot項(xiàng)目過(guò)程詳解
這篇文章主要介紹了基于javamelody監(jiān)控springboot項(xiàng)目過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringBoot整合mybatis-generator-maven-plugin的方法
這篇文章主要介紹了SpringBoot整合mybatis-generator-maven-plugin,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Spring Cloud負(fù)載均衡及遠(yuǎn)程調(diào)用實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring Cloud負(fù)載均衡及遠(yuǎn)程調(diào)用實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

