A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 云水禅心 中级黑马   /  2013-10-25 16:59  /  1100 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射
反射基石-class类:用于描述每个类在内存中的“字节码”这一事物。字节码包含的信息有:类名、类的访问权限、类所属的包名、字段名称列表、方法名称列表等。
一个类被加载到内存中后,占用一片内存空间,这个空间里的内容即为字节码。
如何得到各个字节码的实例对象?
1、类名.class 如System.class 应用前提:知道这个类的类名
2、对象.getClass() 如new Date().getClass 应用前提:有这个对象或其引用
3、Class.forName("类名") 如Class.forName("java.util.System") 应用前提:知道类的全路径名

反射:将java类的各个成份(构造方法、普通方法、方法参数、字段、访问权限)分别映射成java类。
创建实例对象的三种方式:
1、普通方式: String str1 = new String("Hello");
2、反射构造方法: String str2 = str1.getClass.getConstructor((StringBuilder.class).newInstance(new StringBuilder("Hello"));
3、Class.newInstance()方法:
String str3 = String.class.newInstance();//该方法内部先得到默认的构造方法,再用构造方法创建实例对象
的属性值。
Method类
反射方法:Method charAt = String.class.getMethod("charAt", int.class);
方法调用:1、通常方法:str.charAt(1);
2、反射方法:charAt.invoke(str, 1);
如果传递给Method对象的invoke()方法一个参数(null,args),表明该Method对象对应的方法是一个静态方法。


评分

参与人数 1黑马币 +3 收起 理由
To + 3 鼓励

查看全部评分

2 个回复

倒序浏览
深入java反射部分没有
回复 使用道具 举报
虽然还没有学习到,但还是很有用的,分享下{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马