反射

面向对象的思想: 画圆,让这个圆这个类自身去调用draw方法,圆心和半径都在圆中只有圆知道如何去

画 对列车刹车,司机是不会刹车的,他不能跳下列车跑到列车前面推着列车煞车,只能发一个信号给列

车,让列车自己启动煞车内部的相关操作 对关门,你只是推了门一下,门按着它的轴转到门锁上使自己

关闭
 反射:就是把java类中各种成分映射成相应的java类

反射的基石----Class类

如何得到各个字节码对应的实例对象:
1:类名.class
2:对象.getclass()
3:class.forName("类名")

八种基本类型:int,char····等包括void也有对应的class类。
如class cls1=void.class;//这也是一份字节码

cls1.isPrimitive()//判断是否为基本类型的字节码

Integer.TYPE:表明它包装基本类型的字节码。故与int.class字节码一样
但int.class!=Integer.class
int.class==Integer.TYPE
 
只要在源程序中出现的类型都有各自的class实例对象。

构造方法的反射应用:
1:得到某个类所有构造方法
如:Constructor[] constructors=class.forName(" ···").getConstructors();
2:得到某个类的某一个构造方法:
如:String.class.getConstructor(StringBuffer.class);
//得到不带参数的构造方法:
class.newInstance();

//成员变量的反射
只要是比较字节码就用==号而不用equals否则语义不明确。

如:
Field[] fields=obj.getclass().getFields();
for(Field field:fields)
if(field.getType()==String.class)
·····
//成员方法的反射
方法:

Method 名字=String.class.getMethod("charAt",int.class);
调用时:
名字.invoke(对象名,参数);

//数组与object的关系及其反射

只要维数相同且类型相同得到的字节码是同一份
//数组的反射
不能得到数组中元素的类型只能得到某个具体元素的类型如:a[0].getclass.getName();

//ArrayList--HashSet的比较及HashCode分析

ArrayList:对象放入时按先后顺序依次放入
HashSet:放入时先比较看是否已有该对象,若有则不放。
//谈谈HashCode的作用?(java中有内存泄露么)
作用:鉴定两个对象是否相同。HashCode采用哈希算法给每个对象计算一个哈希编码,从而分在不同的区

,当再次插入对象作查找相同的比较时可以很快定位,提高了效率。它与equals方法类似,但两者有区

别。
一般,equals是给用户调用的,它主要是判断从表面上看或从内容上看2个对象是不是相等。
而HashCode相当于一个对象的编码,一般在覆盖equals方法时也覆盖HashCode让他们逻辑一致。另外,

equals方法比较相等的两实例对象他们的HashCode编码也必须相等,反之则不成立。

内存泄露:
当一个对象被存储进HashSet集合中,就不能修改这个对象中的那些参与计算哈希值的字段了,否则修改

后的对象的哈希值与最初存进HashSet集合中的哈希值就不同了,当再删除时就找不到了,造成内存泄露

//框架的概念及用反射技术开发框架的原理
反射的作用:实现框架的功能。
由于在写程序时无法知道要调用的类名,所以在程序中无法直接new某个类的实例对象而要用反射方式来

实现。

//用类加载器的方式管理资源和配置文件

getRealPath();//可以得到某文件在该盘的路径
//一定要用完整的路径,但完整路径不是硬编码,而是运算出来的。
如:类名.class.getclassLoader().getResourceAsStream("目录名+文件名");

配置文件时用类加载器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值