java通过反射获取Java对象属性值
说明:
作为反射工具类,通过对象和属性的名字获取对象属性的值,如果在当前对象属性没有找到,依次向上收集所有父类的属
性,直到找到属性值,没有找到返回null;
代码:
1.classUtil
package com.example.demo.utill; import java.lang.reflect.Field; /**
* description: TODO
* date: 2020/3/24 0024 下午 21:32
*
* @author : Administrator
* @since : 1.0
**/
public class ClassUtil { public static Object getPropertyValue(Object obj, String propertyName) throws IllegalAccessException {
Class<?> Clazz = obj.getClass();
Field field;
if ((field = getField(Clazz, propertyName)) == null)
return null;
field.setAccessible(true);
return field.get(obj);
} public static Field getField(Class<?> clazz, String propertyName) {
if (clazz == null)
return null;
try {
return clazz.getDeclaredField(propertyName);
} catch (NoSuchFieldException e) {
return getField(clazz.getSuperclass(), propertyName);
}
}
}
2.测试类和接口
package com.example.demo.utill; /**
* description: TODO
* date: 2020/3/24 0024 下午 21:50
*
* @author : Administrator
* @since : 1.0
**/
public class Person {
private String age; public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
}
}
package com.example.demo.utill; /**
* description: TODO
* date: 2020/3/24 0024 下午 21:42
*
* @author : Administrator
* @since : 1.0
**/
public class User extends Person{
private String name ; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
3.测试
package com.example.demo.utill; /**
* description: TODO
* date: 2020/3/24 0024 下午 21:41
*
* @author : Administrator
* @since : 1.0
**/
public class Test {
public static void main(String[] args) throws IllegalAccessException {
User u = new User();
u.setName("张三");
u.setAge("20");
Object o = ClassUtil.getPropertyValue(u,"ag1e");
System.out.println(o);
}
}
// outPut:null
java通过反射获取Java对象属性值的更多相关文章
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- java反射获取字段的属性值,以及为字段赋值等方法
1.获取某个类的属性值 /*利用getter方法获取值(首字母大写) CjJssetDTO obj: */ String filedName = "Cj"+(i+1); Class ...
- 【java】之Method和Field反射获取和设置属性值
package com.javaluna.reflect; import java.lang.reflect.Field; import java.lang.reflect.Method; impor ...
- java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值
1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...
- Java反射学习-1 - 反射获取类的属性,方法,构造器
新建一个Person类 package cn.tx.reflect; /** * 注解初步了解 * @author Administrator * */ public class Person { p ...
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
- JAVA读取XML文件并解析获取元素、属性值、子元素信息
JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取 InputStream DocumentBuilderFactory Element Node 前言 最 ...
- Java反射获取class对象的三种方式,反射创建对象的两种方式
Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...
- Java设置以及获取JavaBean私有属性进阶
在上一篇博客中讲到使用Java提供的原生API设置以及获取一个JavaBean的私有属性. 但是使用Java的原生API过于复杂,有没有更加简单的方法呢?答案是肯定的.下面介绍一个开元工具包来非常方便 ...
随机推荐
- js运算符 及 运算符优先级
「运算符」是用于实现赋值.比较和执行算数运算等功能的符号.常用运算符分类如下符号 算数运算符 递增和递减运算符 比较运算符 逻辑运算符 赋值运算符 算数运算符 运算符 描述 案例 + 加 10+20= ...
- redis学习笔记(详细)——高级篇
redis学习笔记(详细)--初级篇 redis学习笔记(详细)--高级篇 redis配置文件介绍 linux环境下配置大于编程 redis 的配置文件位于 Redis 安装目录下,文件名为 redi ...
- C# for Beginner Part 21 to 30
Part 21 Inheritance in c# Why Inheritance Pillars(支架) of Object Oriented Programming 1,Inheritance(继 ...
- 用C++实现俄罗斯方块(Tetris)游戏
我是一个C++初学者,控制台实现了一个俄罗斯方块游戏. 代码如下: //"俄罗斯方块"V1.0 //李国良于2017年1月20日编写完成 #include <iostream ...
- [hdu6997]愿望幽灵
约定:$[x^{n}]F(x)$表示多项式$F$的$n$次项系数 对于多项式$F$,定义$F$的复合逆$\hat{F}$为满足$F( ...
- [luogu5361]热闹的聚会与尴尬的聚会
由于两者是独立的,我们希望两者的$p$和$q$都最大 考虑最大的$p$,先全部邀请,此时要增大$p$显然必须要删去当前度数最小的点,不断删除之后将每一次度数最小值对答案取max即可 对于$q$也即最大 ...
- [bzoj1858]序列操作
考虑建立一棵线段树,维护:1.左端点的连续1和:2.右端点的连续1和:3.最长1的连续子序列:4.1的个数:5.将0和1交换后上面的四项:6.懒标记具体实现中,需要注意细节,可以看代码(比较短) 1 ...
- Spring扩展点-v5.3.9
Spring 扩展点 **本人博客网站 **IT小神 www.itxiaoshen.com 官网地址****:https://spring.io/projects/spring-framework T ...
- System类的常用方法(currentTimeMillis与arraycopy)
System类的常用方法 currentTimeMillis与arraycopy import java.util.Arrays; /* java.lang.System类中提供了大量的静态方法,可以 ...
- 实践案例1-利用低代码开发平台Odoo快速构建律师事务所管理系统
今年10月份中旬的时候,有一段时间没联系的中学同学,我跟他关系比较好,突然打电话给我,希望我给他夫人的律所开发一个小系统.记得十几年前,当他还在他叔叔公司上班的,他是负责销售的,我们几乎每周都碰面,那 ...