重温反射
来源:互联网 发布:eclipse更改端口号 编辑:程序博客网 时间:2024/05/16 13:55
2.通过反射创建对象
3.通过反射获取属性
4.通过反射更改属性(private和其他)
5.通过反射获取方法
6.通过反射调用方法
1三种方式根据名称获得对象
main(){
String classname="com.aa.User"; //代表着类名字的字符串
//1.
Class clazz=Class.forName(classname); //通过forname获取对象
//2
Class clazz=User.class();//直接通过类名获取类对象
//3
User u=new User();
Class clazz=u.getClass();//通过对象获取类对象
}
2.通过反射创建对象
无论通过哪种方式获得类对象,我们都可可以通过这个类对象,获取类的实例对象
main(){
Class clazz=Class.forName(classname);
Object o=clazz.newInstance();
User u=(User)o;
system.out.println(u);//newInstance方法 将Class对象得到实例对象
}
3.通过反射获取属性
main(){
Class clazz=Class.forName(classname);
Field[] d =clazz.getDeclaredFields();//属性
Field[] d1 = clazz.getFields();
for(Field f :d){
system.out.println(f);
}
}
上面两种方式 获取属性,其中第一种方法获取到全部属性,包括private 的,第二种方式获取到的不包含private的
4.通过反射更改属性(private和其他)
main(){
Class clazz=Class.forName(classname);
Object o=clazz.newInstance();//创建出对象
User u=(User)o;
Field[] d = clazz.getDeclaredFields();//属性
Field[] d1 = clazz.getFields();
for(Field f :d){
if(f.getname.equals("Id")){//遍历查找名字叫 id的属性
f.set(u,158);//将对象:U 的f属性,也就是id属性设置成 158
}
}
system.out.println(u);//打印出u ,这时候的id 就被改变了
}
其实很好理解,我们是想改变 User 这个类的一个实例对象 u的一个属性的值,首先我们遍历User的所有属性,查找到那个属性,然后我们调用属性的set方法,将实例对象和值传递过去,这样就帮我们更改了
5.通过反射获取方法
main(){
Class clazz=Class.forName(classname);
Method method[] clazz.getMethods();
for(Method m:method){
system.out.print(m);
}
}
和获取属性类似
6.通过反射调用方法
和设置属性相似 首先我们上面获取到全部的方法,首先 我们遍历方法的列表,调用getname方法,找到指定的属性
main(){
Class clazz=Class.forName(classname);
Object o=clazz.newInstance();//创建出对象
User u=(User)o;
Method method[] clazz.getMethods();
for(Method m:method){
if(mgetname.equals("setId")){//遍历查找名字叫 setid的方法
m.invoke(u,160);//将160作为u的setid参数传递过去调用
}
}
system.out.println(u); //打印出u ,这时候的id 就被改变了
}
和设置属性差不多,invoke调用方法
- 重温反射
- 重温
- 重温《JAVA编程思想》----2017.1.20 类型信息+反射(完结)
- 重温 DOS
- 重温classpath.
- 重温‘心火’
- 重温MVC
- 重温C++
- 重温compiere
- 重温 高考
- 重温struts
- VirtualMemory重温
- 重温MFC.
- 重温“黑客”
- 重温Ubuntu
- 重温经典
- 【ffmpeg重温】
- 重温c++
- 在Spring Boot中使用Spring Security实现权限控制
- 编程工作,毁坏了你的编程爱好
- mysql下如何执行sql脚本
- 阿里云移动测试平台基础了解(上篇)
- 数据结构课程设计学生信息管理系统
- 重温反射
- 批处理与python配合编程的方法
- c++ < > == 重载
- java 中的数组
- U3D项目源码 百度云资源
- 学习笔记之线程间通信
- Linux 接口并发压力测试
- 在 Linux 下安装 JDK 并配置环境变量的方法
- Shiro之CAS单点登录-yellowcong