01 |
package com.juziku;
|
02 |
03 |
/** |
04 |
* 反射类
|
05 |
* @author sunlightcs
|
06 |
* 2011-3-5
|
07 |
* http://hi.juziku.com/sunlightcs/
|
08 |
*/
|
09 |
public class ReflectPoint {
|
10 |
/**
|
11 |
* 私有变量x
|
12 |
*/
|
13 |
private int x;
|
14 |
|
15 |
public int y;
|
16 |
public String str1 = "abc" ;
|
17 |
public String str2 = "123" ;
|
18 |
|
19 |
public ReflectPoint( int x, int y) {
|
20 |
super ();
|
21 |
this .x = x;
|
22 |
this .y = y;
|
23 |
}
|
24 |
|
25 |
} |
01 |
package com.juziku;
|
02 |
03 |
import java.lang.reflect.Field;
|
04 |
05 |
/** |
06 |
* 反射例子
|
07 |
* @author sunlightcs
|
08 |
* 2011-3-5
|
09 |
* http://hi.juziku.com/sunlightcs/
|
10 |
*/
|
11 |
public class ReflectTest {
|
12 |
13 |
public static void main(String[] args) throws Exception{
|
14 |
|
15 |
ReflectPoint reflectPoint = new ReflectPoint( 3 , 5 );
|
16 |
|
17 |
/**
|
18 |
* 通过反射,获得ReflectPoint属性的值
|
19 |
*
|
20 |
* reflectPoint.getClass()表示获得ReflectPoint的字节码,
|
21 |
* 当然也可以写成Field fieldY = ReflectPoint.class
|
22 |
* 或Class.forName("com.juziku.ReflectPoint");
|
23 |
* 获得某个类的字节码的方法有3种:
|
24 |
* ReflectPoint.class (类名.class)
|
25 |
* reflectPoint.getClass() (对象名.getClass())
|
26 |
* Class.forName("com.juziku.ReflectPoint") (Class.forName(类名的路径))
|
27 |
*
|
28 |
* reflectPoint.getClass().getField("y")表示获得ReflectPoint里y属性的位置
|
29 |
*/
|
30 |
Field fieldY = reflectPoint.getClass().getField( "y" );
|
31 |
|
32 |
/**
|
33 |
* fieldY.get(reflectPoint)表示获得reflectPoint对象里,y位置对应属性的值
|
34 |
*/
|
35 |
Object y = (Object)fieldY.get(reflectPoint);
|
36 |
|
37 |
/**
|
38 |
* 打印reflectPoint对象里,属于为y的值
|
39 |
*/
|
40 |
System.out.println(y);
|
41 |
|
42 |
|
43 |
|
44 |
/**
|
45 |
* 获得x属性的值,由于x属于为private类型,
|
46 |
* 所以要通过getDeclaredField方法查询x所在的位置
|
47 |
*/
|
48 |
Field fieldX = reflectPoint.getClass().getDeclaredField( "x" );
|
49 |
|
50 |
/**
|
51 |
* 由于x属于为private类型,也要设置成可访问,不然获取不到值
|
52 |
*/
|
53 |
fieldX.setAccessible( true );
|
54 |
Object x = (Object)fieldX.get(reflectPoint);
|
55 |
System.out.println(x);
|
56 |
|
57 |
|
58 |
/**
|
59 |
* 获得类型为String的所有值
|
60 |
*/
|
61 |
getStringValues(reflectPoint);
|
62 |
|
63 |
|
64 |
/**
|
65 |
* 修改str1属性的值
|
66 |
*/
|
67 |
onchageValue(reflectPoint);
|
68 |
69 |
}
|
70 |
71 |
private static void getStringValues(Object obj) throws Exception{
|
72 |
/**
|
73 |
* 获得所有属性的位置
|
74 |
*/
|
75 |
Field[] fields = obj.getClass().getFields();
|
76 |
|
77 |
for (Field field : fields){
|
78 |
/**
|
79 |
* 这里建议用==,不建议用equals
|
80 |
* 如果field属性是String类型的话,那么跟String的字节码是同一份
|
81 |
*/
|
82 |
if (field.getType() == String. class ){
|
83 |
String str = (String)field.get(obj);
|
84 |
System.out.println(str);
|
85 |
}
|
86 |
}
|
87 |
}
|
88 |
89 |
private static void onchageValue(Object obj) throws Exception{
|
90 |
Field field = obj.getClass().getField( "str1" );
|
91 |
System.out.println(field.get(obj));
|
92 |
field.set(obj, "22" );
|
93 |
System.out.println(field.get(obj));
|
94 |
}
|
95 |
96 |
} |
相关推荐
java反射,获取所有属性、方法以及List集合类
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java的反射机制操作父类的所有属性和方法。
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、...
主要介绍了java反射获取一个object属性值代码解析,具有一定借鉴价值,需要的朋友可以参考下。
主要介绍了Java利用反射获取object的属性和值代码示例,具有一定借鉴价值,需要的朋友可以参考下。
利用反射获取实例化类的属性值和属性值!很实用,直接复制到控制台就行了!
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性...
(类的加载概述和加载时机) (类加载器的概述和分类) (获取class文件对象的三种方式) ...(通过反射写一个通用的设置某个对象的某个属性为指定的值) (通过用户的增删改查和学生的登录注册引出中介) (动态代理的概述和实现)
在web开发中,经常遇到修改的操作。而使用hibernate,它的修改是基于对象的,如果用户修改的字段非常多,但是我们并不知道用户到底修改了那个字段,这时候就需要一个一个的去判断,因此非常耗时,所以我写了个工具类...
下面小编就为大家带来一篇Java通过反射机制动态设置对象属性值的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下
java的泛型和反射机制一直很难理解和应用,这个程序是关于反射和泛型的综合使用,主要实现获取一个类的属性名和方法,并可以获取属性值,存取属性值,属性名和属性值的字符串方式输出。只是个工具类,没有写测试类,...
以下是对在Java中采用反射获取class属性值的实现代码进行了分析介绍,需要的朋友可以过来参考下
java反射,设置属性值,获得属性,具有多个对象同事设置,缓存的处理,
最近在工作中遇到一个需求,要利用反射对修饰符为final的成员变量进行修改,所以这篇文章主要给大家介绍了关于Java反射如何有效的修改final属性值的相关资料,文中通过示例代码介绍的非常详细,对需要的朋友可以参考...