Java实现反射获取对象属性信息?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
先建立一个类,有四种属性:
private int id;
private String name;
private byte by;
private short st;
以下方法,创建一个对象,然后打印该对象的属性名字,属性值,和属性的类型:
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);
}
/**
* 获得一个对象各个属性的字节流
*/
@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());
}
}
/**
* 获得对象属性的值
*/
@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);
}
}
打印结果如下:
id 1 int
name cc class java.lang.String
by 1 byte
st 2 short
关于Java实现反射获取对象属性信息问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。