JAVA反射机制的简单实例和说明

一:反射机制的作用主要是:
1:可以将.class文件转为.java文件,实现反编译
2:可以通过类的名字得到这个JAVA对象中所有的属性和方法。
3:用的最多的就是spring框架了。因为我们在配置文件中配置好类的应射关系后,就可以通过反射机制自动找它的属性和方法了。框架再复杂也是使用的这种基本原理,只是它在上面又做了很多封装。
主要用到以下几个类:
java.lang.Class
java.lang.reflect.Constructor
java.lang.reflect.Field
java.lang.reflect.Method
java.lang.Modifier
这几个类的详细使用方法可以参看JDK的文档,上面都有详细介绍,这也是我们学习时最好一个文档。
二:为了测试看效果。我们先创建一个实体的类
package com.common;
public class User {
private int id;
private String name;
private String sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
三:反射机制创建一个类的对象
package com.common;
public class ReflectTest {
public static void main(String[] args) {
try {
Class classUser = Class.forName("com.common.User");
User user = (User)classUser.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
}
四:获取一个对象里面所有的方法,一共有三种方式得到类
package com.common;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args) {
try {
/*
* 方法1
*/
Class user = Class.forName("com.common.User");
/*
* 方法2
* Class user = User.class;
*/

/*
* 方法三
User u = new User();
Class user = u.getClass();
*/
Method[] method = user.getMethods();
for(int i=0;i<method.length;i++){
System.out.print(method[i].toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
五:获取一个类里面所有的属性和指定的一个属性
package com.common;
import java.lang.reflect.Field;
public class ReflectTest {
public static void main(String[] args) {
try {
//得到类的class
Class classUser = Class.forName("com.common.User");
//取得所有的属性
Field[] fields = classUser.getDeclaredFields();
for(Field field : fields){
System.out.println(field.getName());
//field对象还有很多属性可以取到,这个可以参看JDK,这里就不全部列出了
}
//取得一个特定的属性
Field field = classUser.getDeclaredField("id");
field.getName();
} catch (Exception e) {
e.printStackTrace();
}
}
}
更多的取值可以参看JDK帮助文档中的java.lang.reflect包下面的类,我们在使用spring框架的时候,在配置文件中配置了类名为什么就能找到它所有的属性和方法,就是通过反射机制做到的,后面我们会讲spring框架的搭建和配置。慢慢来,先了解简单的原理再深入研究是一个不错的选择。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值