黑马程序员_java基础自学反射

来源:互联网 发布:sql数据库卸载 编辑:程序博客网 时间:2024/05/29 17:05

-----<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

17 透彻分析反射的基础——类 只要在源程序中出现的类型,都有各自的Class实例对象,例如,int[],void……

18 理解反射的概念 反射就是把Java类中的各种成分映射成相应的java类。

19 编译器只看变量的定义,不看代码的字型。得到方法时需要类型,调用方法时需要同样类型的对象。Constructor类代表某个类中的一个构造方法。得到某个类所有的构造方法:得到某一个构造方法。创建实例对象。

20 field类代表字节码身上的变量。

21 字段的反射

22 Method类 Method类代表某个类中的一个成员方法。得到类中的某一个方法:

例子:Method charAt =

Class.forName(“java.lang.String”).getMethod(“charAt”.int.class);

调用方法:

通常方式:System.out.println(str.charAt(1));

反射方式:System.out.pringln(charAt.invoke(str.1);

如果传递给Method对象的invoke()方法的第一个参数为null,这说明该Method对象对应的是一个静态方法!

23 用反射方式执行某个类中的main方法

24-25 数组的反射

具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。

代表数组的Class实例对象的getSuperClass()方法返回的父类为Object类对应的Class.

基本类型的一维数组可以被当做Object类型使用,不能当做Object[]类型使用;非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用。

Arrays.asList()方法处理int[]和String[]时的差异。Array工具类用于完成对数组的反射操作。

26 反射的综合案例

反射的作用》》》实现框架功能

框架与框架要解决的核心问题,框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。

因为在写程序时无法知道要被调用的类名,所以,在程序中无法直接new某个类的实例对象了,而要用反射的方式来做。

HashSet就是采用哈希算法存取对象的集合,它内部采用对某个数字n进行取余的方式来对哈希码进行分组和划分对象的存储区域。Object类中定义了一个hashCode()方法来返回每个Java对象的哈希码,当从HashSet集合中查找某个对象时,Java系统首先调用对象的hashCode()方法获得该对象的哈希码,然后根据哈希码找到对应的存储区域,最后取出该存储区域内的每个元素与该对象进行equals方法比较,这样不用遍历集合中的所有元素就可以得到结论。可见,HashSet集合具有很好的对象检索性能,但是,HashSet集合存储对象的效率要低些,因为想HashSet集合中添加一个对象时,要先计算出对象的哈希码和根据这个哈希码确定对象在集合中存放的位置。

27 如果要在两个模块之间传递多个信息,可以将这些信息封装到一个类中,这种类的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,如果读取或设置这些字段的值,则需要通过一些相应的方法来访问。

0 0