黑马日记第十篇——反射
来源:互联网 发布:美国常用聊天软件 编辑:程序博客网 时间:2024/05/13 08:52
---------------------- andorid培训 、java培训、期待与您交流!----------------------
一、Class类
Class代表一份字节码对象,如:Class cls = 字节码;
得到字节码对象的三种方式:
1,类名.class。如:System.class。
2,对象.getClass()。如:new Data().getClass()。
3,Class.forName("类名")。如:Class.forName("java.util.Data")。
二、反射
反射就是吧Java类中的各种成分映射成相应的java类。(使用反射会导致性能下降)
1,ConsTructor类
该类用于等到某个类的构造方法。
得到某类的所有构造方法:
例:Constructor[] constructor= Class.forName("java.lang.String").getConstuctors();
得到某类的某一个构造方法:
例:Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
调用构造方法:
newInstance(initargs);
2,Field类
表示某类或借口的字段的信息。通过Class类的getField方法或getDeclareField方法可以获取该对象。
例题:
将任意一个对象中的所有String类型成员变量所对应的字符串内容的“b”改为“a”。
public void changeStringValue(Object obj) throws Exception
{
Field[] fileds = obj.getClass().getFields();
for(Filed field : fields)
{
if(field.getType()==String.class)//注意:字节码之间比较相等使用“==”,规范。
{
String oldValue = (String)field.get(obj);
String newValue = oldValue.replace('b','a');
field.set(obj,newValue);
}
}
}
3,Method类
代表某个类中的成员方法。
通过Class类中的getMethod方法获取,格式如下:
getMethod(name,parameterType);
实例:
Method methodCharAt = String.class.getMethod("charAt",int.class);
methodCharAt.invoke(str,args);
上述实例中getMethod方法的两个参数为方法名和方法对应参数的字节码,其中invoke方法为调用方法。
注:jdk1.4与1.5中invoke方法区别:因为1.5出现了可变参数的概念,所以二者在invoke方法的描述上如下:
1.4:public Object invoke(Object obj,Object[] args)
1.5:public Object invoke(Object obj,Object...args)
所以如果使用1.4的格式改写实例中方法为:charAt.invoke("str",new Object[]{1});
---------------------- android培训 、java培训、期待与您交流!----------------------
- 黑马日记第十篇——反射
- 黑马程序员——学习日记之反射
- 黑马程序员——(学习日记——反射)反射
- 黑马程序员—反射篇
- 黑马程序员张毓庆的学习日记第十篇
- 黑马程序员 反射学习日记
- 黑马程序员学习日记--反射
- 黑马日记第二篇——数组
- 黑马日记第五篇——多线程
- 黑马日记第七篇——集合
- 黑马日记第八篇——IO
- 黑马程序员—JAVA基础学习日记十——反射学习总结
- 黑马程序员——学习日记19 java反射机制、正则表达式
- 黑马程序员——学习日记之--反射的用法和Eclipse使用
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 【Android Training - 15】云同步的实现 [Lesson 0 - 章节概览]
- hdu 4215 Number Theory?(***)
- 使用Audio Queue Services 播放和录制音频
- 关注两大主流存储技术NAS和SAN的比拼
- 影响谷歌排名算法的因素(4) – 页面上关键字的使用情况
- 黑马日记第十篇——反射
- The magic of “overflow: hidden”
- JavaBean简单例子
- 对比MFC ,Winform ,WPF
- Android应用资源---绘制资源类型(Drawable)(二)
- 软考(-)编译原理
- 影响谷歌排名算法的因素(5) – 流量和点击率
- SQL Server将单表数据导出成insert脚本形式
- Android 的用户层 uevent处理机制