4.11学习内容
来源:互联网 发布:mac airplay显示关闭 编辑:程序博客网 时间:2024/06/15 22:23
反射技术
1.反射的应用场合
当编译不知道类或对象的具体信息,使用反射来实现。比如类的名称放在XML文件中,属性和属性值放在XML文件中,需要在运行时读取XML文件,动态获取类的信息。
2.反射的作用
通过反射可以使程序代码访问装在到JVM中的类的内部信息
·获取已装载类的属性信息
·获取已装载类的方法
·获取已装载类的构造方法信息
3.Class类的使用
Field 代表类的属性
Method 代表类的方法
Constructor 代表类的构造方法
Modifier 代表修饰符 public static native final abstract
Class clazz = Class.forName(cn.sxt.reflection.entity.User);//获取一个类的图(Class结构信息)
Field[] fields1 = clazz.getFields();//获取所有的公有属性
Field[] fields2 = clazz.getDeclaredFields();//获取所有的属性
Field f1 = clazz.getField("username");//根据名称获取属性,可以是父类的,但必须是公有的,如果是私有的,会报异常
Field f2 = clazz.getDclaredField("username");//根据名称获取属性,可以是私有的
4.获取Class的是那种方式
方式1:Class.forName();
方式2:类名.class
方式3:对象名.getClass();
第一种方式使用频率最高
5.使用反射创建对象
String className = "cn.sxt.reflection.entity.User";
Class clazz = Class.forName(className);
Object obj = clazz.newInstance();
Constructor c = clazz.getConstructor();//从结构信息中获取无参数构造方法
obj = c.newInstance();//使用无参数构造方法创建对象
Constructor con = clazz.getDeclaredConstructor(String.class,String.class);//获取指定的构造方法
//通过有参数构造方法创建对象
con.setAccessible(true);
Object obj = con.newInstance("bjsxt","bjsxt");
6.使用反射操作属性以及调用方法
//获取方法
Method m1 = clazz.getMethod("shout");
Method m2 = clazz.getMethod("add",int.class,int.class);
//调用方法
m1.invoke(obj);
Object result = m2.invoke(obj,10,20);
//得到属性
Field f = clazz.getDeclaredField("username");
//操作属性(赋值)
f.setAccessible(true);
f.get(obj,"bjsxt123");
//操作属性(取值)
System.out.println(f.get(obj));
7.反射的优缺点
反射的优点
功能强大:编译时不知道类的具体信息,可以根据运行时信息来创建对象,进而操作属性和调用方法。
可以突破封装的限制,即使private内容也可以操作,还可以突破泛型限制
反射的缺点
编码可读性降低
执行速度慢,需要现在运行时获取相应类的信息,然后才能创建对象
- 4.11学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容
- 学习内容????????
- 学习内容
- 近期学习内容
- 进一步学习的内容
- 软件设计学习内容
- 最近学习内容
- 模拟相机捕捉影像 将影像进行保存
- C++实现24点游戏
- C++的顶层const和底层const的理解
- Linux下find命令的解析
- vs和sqlserver连不上服务器的解决办法
- 4.11学习内容
- tensorflow 1.01中GAN(生成对抗网络)手写字体生成例子(MINST)的测试
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- POJ 1330 Nearest Common Ancestors 【最近公共祖先】
- 零基础Linux下安装jdk与tomcat最精简版本
- Resteasy概述,Resteasy使用说明,Resteasy讲解
- 数塔 (dp水题)
- GSM短信收发介绍
- MYSQL