java 之反射笔记(一)

来源:互联网 发布:家庭装修预算软件 编辑:程序博客网 时间:2024/06/05 08:34
反射 就是 把java类中的各种成分映射成相应的类。
例如:Field Method Constructor Package


获得字节码的三中方式:
1.类名.class
2.对象.getClass()
3.Class.forName("类名")


Class.forName("类名")的作用就是获得字节码:
1.如果虚拟机里边有,则直接拿到;
2.如果没有,就让类加载器加载进来,缓存在虚拟机里,拿到


九个预定义Class实例对象:
八个基本类型 boolean byte char short int long float double
和一个void.class

Constructor[] === String.getConstructors()


得到某一个构造方法:
Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);


实例化:
1. new String();
2. constructor.newInstance(initargs)
//class----->constructor----------->new object
3. Class.forName("java.lang.String").newInstance();//默认构造方法


Field========>成员变量


Method========>成员方法
方法与对象没关系,是属于类的


先得到方法,然后针对某个对象调用方法


method对应的是一个静态方法,不需要实例对象
method.invoke(null)


ArrayList 有序集合,把对象的引用放进去按顺序


HashSet 会先比较两个对象是否相同,引用相同的就不会放进去
如果没有重写hashCode 和 equals方法,就比较内存地址


根据哈希码 找到对象对应的存储区域
根据内存地址 算出哈希码,造成存储区域不一样。即使equals方法比较相等,如果没有重写hashCode方法,也可以放进去
原创粉丝点击