- 浏览: 103402 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wxynxyo:
非常感谢,解决了一个问题
Spring MVC 类型转换 @InitBinder使用 转 -
hxsmile:
很清晰明了
MyEclipse下XFire开发Webservice实例 -
yaoyy:
...
MyEclipse下XFire开发Webservice实例 -
hyl523:
好,明白了,多谢!
MyEclipse下XFire开发Webservice实例
通过java反射获得属性值
Java的反射非常强大,传递class, 可以动态的生成该类、取得这个类的所有信息,包括里面的属性、方法以及构造函数等,甚至可以取得其父类或父接口里面的内容。
- static Object create(Class clazz) throws Exception {
- Constructor con = clazz.getConstructor(String.class);
- Object obj = con.newInstance("test name");
- return obj;
- }
- static void invoke1(Object obj, String methodName)
- throws IllegalArgumentException, IllegalAccessException,
- InvocationTargetException, Exception, NoSuchMethodException {
- Method[] ms = obj.getClass().getDeclaredMethods();
- ms = obj.getClass().getMethods();
- for (Method m : ms) {
- // System.out.println(m.getName());
- if (methodName.equals(m.getName()))
- m.invoke(obj, null);
- }
- Method m = obj.getClass().getMethod(methodName, null);
- m.invoke(obj, null);
- }
- static void field(Class clazz) throws Exception {
- Field[] fs = clazz.getDeclaredFields();
- //fs = clazz.getFields();
- for (Field f : fs)
- System.out.println(f.getName());
- }
- static void annon(Class clazz) throws Exception {
- Annotation[] as = clazz.getAnnotations();
- }
例:
packagecom.juziku;
publicclassReflectPoint {
/**
* 私有变量x
*/
privateintx;
publicinty;
publicString str1 = "abc";
publicString str2 = "123";
publicReflectPoint(intx, inty) {
super();
this.x = x;
this.y = y;
}
}
packagecom.juziku;
importjava.lang.reflect.Field;
/**
* 反射例子
* @author sunlightcs
* 2011-3-5
* http://hi.juziku.com/sunlightcs/
*/
publicclassReflectTest {
publicstaticvoidmain(String[] args) throwsException{
ReflectPoint reflectPoint = newReflectPoint(3,5);
/**
* 通过反射,获得ReflectPoint属性的值
*
* reflectPoint.getClass()表示获得ReflectPoint的字节码,
* 当然也可以写成Field fieldY = ReflectPoint.class
* 或Class.forName("com.juziku.ReflectPoint");
* 获得某个类的字节码的方法有3种:
* ReflectPoint.class (类名.class)
* reflectPoint.getClass() (对象名.getClass())
* Class.forName("com.juziku.ReflectPoint") (Class.forName(类名的路径))
*
* reflectPoint.getClass().getField("y")表示获得ReflectPoint里y属性的位置
*/
Field fieldY = reflectPoint.getClass().getField("y");
/**
* fieldY.get(reflectPoint)表示获得reflectPoint对象里,y位置对应属性的值
*/
Object y = (Object)fieldY.get(reflectPoint);
/**
* 打印reflectPoint对象里,属于为y的值
*/
System.out.println(y);
/**
* 获得x属性的值,由于x属于为private类型,
* 所以要通过getDeclaredField方法查询x所在的位置
*/
Field fieldX = reflectPoint.getClass().getDeclaredField("x");
/**
* 由于x属于为private类型,也要设置成可访问,不然获取不到值
*/
fieldX.setAccessible(true);
Object x = (Object)fieldX.get(reflectPoint);
System.out.println(x);
/**
* 获得类型为String的所有值
*/
getStringValues(reflectPoint);
/**
* 修改str1属性的值
*/
onchageValue(reflectPoint);
}
privatestaticvoidgetStringValues(Object obj) throwsException{
/**
* 获得所有属性的位置
*/
Field[] fields = obj.getClass().getFields();
for(Field field : fields){
/**
* 这里建议用==,不建议用equals
* 如果field属性是String类型的话,那么跟String的字节码是同一份
*/
if(field.getType() == String.class){
String str = (String)field.get(obj);
System.out.println(str);
}
}
}
privatestaticvoidonchageValue(Object obj) throwsException{
Field field = obj.getClass().getField("str1");
System.out.println(field.get(obj));
field.set(obj, "22");
System.out.println(field.get(obj));
}
}
发表评论
-
JDK使用InvocationHandler和Proxy实现动态代理
2013-06-11 23:54 923----------------------- ... -
java 内存溢出
2013-06-03 16:25 763java虚拟机的内存基本概念: PermGen spac ... -
java Base64encoder 加密解密
2012-11-18 00:11 1991代码: package Encryption; ... -
java NIO (转)
2012-11-06 16:11 6921. 基本 概念 IO 是主存和外部设备 ( 硬盘、终 ... -
Socket + json + tomcat
2012-10-24 15:09 1280本文主要实现不同tomcat服务器之间通过socket通信,数 ... -
java 日志 log4j和slf4j
2012-10-22 23:01 879log4j简易入门 package ... -
java JDBC
2012-10-09 11:34 766分为6个步骤 1. load the driver (1)Cl ... -
java 文件上传下载
2012-09-09 12:05 859文件下载 import java.io.Buff ... -
java JExcelUtil
2012-09-09 11:54 4import java.io.File; imp ... -
java 日记
2012-09-06 23:14 5411、调用本地动态库(.dll),使用技术 jna 2、 ... -
java IO
2012-09-02 17:20 863流(IO管道): 1、inputStream O ... -
java 线程
2012-09-02 00:06 642线程:线程并行;方 ... -
java的基本数据类型
2012-08-16 16:03 7java的8种基本数据类型包括:byte、short、 ... -
java Junit
2012-08-11 00:19 764什么是单元测试 ... -
Java Socket编程
2012-08-08 21:13 590第一步 充分理解Socket ... -
JAVA IO 乱码
2012-05-02 22:59 42012-04-18 20:38 最近在做HTML静态生 ... -
Java 开发代理服务器
2012-08-07 11:01 680代理服务器的应用非 ... -
java excel
2012-08-07 21:27 1037JXL 读写以及修改EXCEL文件 首先引用网上的文 ...
相关推荐
java反射,获取所有属性、方法以及List集合类
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
主要介绍了java反射获取一个object属性值代码解析,具有一定借鉴价值,需要的朋友可以参考下。
java的反射机制操作父类的所有属性和方法。
主要介绍了Java利用反射获取object的属性和值代码示例,具有一定借鉴价值,需要的朋友可以参考下。
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
利用反射获取实例化类的属性值和属性值!很实用,直接复制到控制台就行了!
利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性...
NULL 博文链接:https://747017186.iteye.com/blog/1935184
通过反射获取注解的属性值 1、获取类上注解的值 1.1 定义注解类 1.2 定义使用注解的类 1.3 测试类 1.4 测试结果 2、获取属性变量上注解的值 2.1 定义注解类 2.2 定义使用注解的类 2.3 定义测试类 2.4 测试结果 3、...
在web开发中,经常遇到修改的操作。而使用hibernate,它的修改是基于对象的,如果用户修改的字段非常多,但是我们并不知道用户到底修改了那个字段,这时候就需要一个一个的去判断,因此非常耗时,所以我写了个工具类...
主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下
(类的加载概述和加载时机) (类加载器的概述和分类) (获取class文件对象的三种方式) ...(通过反射写一个通用的设置某个对象的某个属性为指定的值) (通过用户的增删改查和学生的登录注册引出中介) (动态代理的概述和实现)
下面小编就为大家带来一篇Java通过反射机制动态设置对象属性值的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
以下是对在Java中采用反射获取class属性值的实现代码进行了分析介绍,需要的朋友可以过来参考下
java反射,设置属性值,获得属性,具有多个对象同事设置,缓存的处理,
java的泛型和反射机制一直很难理解和应用,这个程序是关于反射和泛型的综合使用,主要实现获取一个类的属性名和方法,并可以获取属性值,存取属性值,属性名和属性值的字符串方式输出。只是个工具类,没有写测试类,...
最近在工作中遇到一个需求,要利用反射对修饰符为final的成员变量进行修改,所以这篇文章主要给大家介绍了关于Java反射如何有效的修改final属性值的相关资料,文中通过示例代码介绍的非常详细,对需要的朋友可以参考...