黑马程序员--java 类加载器


---------------------- android培训java培训、期待与您交流! ----------------------


类加载器

类可以加载.class文件进内存,自然也可以加载其他的文件,所以除了用InputStream ips = new FileInputStream("config.properties");这种方法外也可以用类加载器进行加载:,但使用类加载器这种方法只能读取,而不能写。例如
ReflectTest2.class.getClassLoader().getResourceAsStream("name");
//先调用类(此处为ReflectTest2)反过来获得加载他进来的类加载器,用getClassLoader()方法
// getResourceAsStream(name);该方法会在classpath目录下逐个查找要加载的文件
InputStream ips = ReflectTest2.class.getClassLoader().getResourceAsStream("cn/itcast/day1/config.properties");
//尽管是根目录,参数中的cn前面也无斜杠
Class类中提供了在不调用getClassLoader()方法的情况下,加载文件的方法:
InputStream ips = ReflectTest2.class.getResourceAsStream("resources/config.properties");
//此处为相对目录
InputStream ips = ReflectTest2.class.getResourceAsStream("/cn/itcast/day1/resources/config.properties");
//此处为根目录
内省

内省用于对javabean的操作,它对应的英文单词为:IntroSpector
(javabean中应有一个无参数的构造函数)
    javabean是一个特殊的java类,这个类中的方法的名称符合约定的规则,例如,有getXxx和setXxx方法,javabean的属性名称,是通过其get和set方法得知的,而不能直接通过其属性得知(javabean的属性为private的)。在javabean中,去掉get或set方法中的get或set后就可以得到其属性名,但其字母的大小写是有规定的,去掉get或set后,若第二个字母是小写的,则第一个字母也应小写;若都是大写的(不包括仅一个字母的情况,一个字母时为小写),则不变。
    我们可以像对普通类一样对javabean进行编程和反射操作。而对于一般的类若它有getXxx和setXxx方法(有其中之一也可),则可以将其看成javabean,对它进行与javabean相同的有关操作,当然可以像一般类那样进行操作。
    如果要在两个模块之间传递多个信息,可以将这些信息封装到一个javabean中,这种JavaBean的实例对象称为值对象(Value Object,简称VO)。
JDK中提供了对JavaBean进行操作的API,这些API就称为内省。
    使用Beanutils工具包设置和读取javabean的属性(均为静态方法)
使用该工具包还要添加包:commons-logging-1.1.jar
1、ReflectPoint pt1 = new ReflectPoint(3,5);
BeanUtils.setProperty(pt1, "x", "9");
//第三个参数表示被设置的属性的值,注意类型为String
System.out.println(BeanUtils.getProperty(pt1, "x").getClass().getName());
//得到的属性值的类型也为String,而不是原类型,采用String类型便于数据的传输
若采用PropertyUtils类,则采用原属性
PropertyUtils.setProperty(pt1, "x", 9);
System.out.println(PropertyUtils.getProperty(pt1, "x").getClass().getName());

2、Beanutils工具包支持属性链

即某一个类的某个属性的类型为类类型,并且该类类型所对应的类也可以当做javabean,那么可以通过BeanUtils,设置该属性的属性
BeanUtils.setProperty(pt1, "birthday.time", "111");
//birthday类型为Data,此处设置birthday的属性time

System.out.println(BeanUtils.getProperty(pt1, "birthday.time"));

现在对类的加载器还是不怎么懂,要继续看,学习


---------------------- android培训java培训、期待与您交流! ----------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值