反射(三) 笔记
来源:互联网 发布:淘宝app地址管理在哪 编辑:程序博客网 时间:2024/05/07 19:12
创建对象
以前,创建对象的方法通常都是通过new操作符调用该类的构造方法来创建的。例如,Date currentDate = new Date();
大多数情况下,这种方式已足够满足需求。因为在编译期间,已经知道要创建的对象所对应的类名称。但是,如果现在编写一个开发工具软件,将可能直到运行时才知道要创建的对象所对应的类名称。例如,一个GUI开发工具可以让用户拖拽各种图形组件到设计界面上。
public Object create(String className){ 根据类名来创建出它的对象 返回这个新创建的对象}
使用无参构造方法
如果要使用无参的构造方法创建对象,只需调用这个类对应的Class对象的newInstance()方法。
Class c = Class.forName("java.util.ArrayList"); List list = (List) c.newInstance();
需要注意的是:如果指定名称的类没有无参构造方法,在调用newInstance()方法时会抛出一个NoSuchMethodException异常。
使用带参数的构造方法
要使用带参数的构造方法来创建对象,可以分为如下3个步骤来完成。
第1步 获取指定类对应的Class对象。
第2步 通过Class对象获取满足指定参数类型要求的Constructor对象。
第3步 调用指定Constructor对象的newInstance方法,传入对应的参数值,创建对象。
调用方法
使用反射可以取得指定类的指定方法的对象代表,方法的对象代表就是java.lang.reflect.Method类的实例,通过Method类的invoke方法可以动态调用这个方法。
public Object invoke(Object obj, Object... args) throws IllegalAccessException,IllegalArgumentException, InvocationTargetException
该方法的第一个参数是一个对象类型,表示要在指定的这个对象上调用这个方法
第二个参数是一个可变参数,用来给这个方法传递参数值;
invoke方法的返回值用来表示动态调用指定方法后的实际返回值。
注意:若要通过反射调用类的某个私有方法,可以在这个私有方法对应的Method对象上,先调用setAccessible(true)来取消Java语言对本方法的访问检查,然后再调用invoke方法来真正执行这个私有方法。
访问成员变量的值
使用反射可获取类的成员变量的对象代表,成员变量的对象代表是java.lang.reflect.Field类的实例,可以使用它的getXXX方法来获取指定对象上的值,也可以调用它的setXXX方法来动态修改指定对象上的值,其中的XXX表示成员变量的数据类型。
Properties
Java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是“键=值”的格式,也就是说文件的每一行都是先定义一个键名,然后等于号后面是值,在properties文件中,可以用“#”来作注释,properties文件在Java编程中用到的地方很多,操作很方便。最常见的操作该类文件的方法是通过Properties类来完成。
JDK 中的 Properties 类存在于包java.util 中,该类继承自 Hashtable ,主要方法包括:getProperty(String key):用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到key所对应的 value。
load(InputStream inStream) :从输入流中读取属性列表(键和元素对)。通过对指定的文件进行装载来获取该文件中的所有键-值对,以供getProperty(String key) 来搜索。
setProperty(String key, String value):调用Hashtable的方法put 。来设置“键-值”对。
store(OutputStream out, String comments):以适合使用load方法加载到Properties表中的格式,将此Properties表中的属性列表(键和元素对)写入输出流。
clear ():清除所有装载的“键-值”对。
- 反射(三) 笔记
- Core Java 笔记(三) - 反射
- java反射笔记三
- 认识泛型的本质---反射学习笔记(三)
- 反射应用(三)
- Java笔记-反射机制(三)-小demo
- java反射学习笔记三(改进笔记二放到配置文件中)
- 反射(二) 笔记
- 反射(四) 笔记
- Java反射机制(三)
- Java反射(三)Field
- java反射机制(三)
- unity shader学习笔记(三)——在Unity中计算高光反射光照
- Java Reflection(反射) 入门学习笔记 之三 (Array)
- Java 反射学习(三)成员方法的反射
- JAVA基础 (三)反射 深入解析反射机制
- 反射(三)利用反射部分更新UI界面
- Java中的反射机制(三) 利用反射访问私有
- PHP中文乱码
- 关于UNIX和Linux系统下SUID、SGID的解析
- Android SDK更新以及ADT更新出现问题的解决办法
- NSPopUpButton的重载
- Java变量自动初始化
- 反射(三) 笔记
- ubuntu 硬盘安装
- HDU 1412 {A}+{B}
- 使用VisualTreeHelper获取DataTemplate中的控件
- 在C++中创建并使用WEB服务
- 反射(四) 笔记
- C++、C#写的WebService相互调用
- Flash Socket通信的安全策略
- JavaScript面向对象编程:类定义、继承、接口实现