黑马程序员-----类加载器、内省学习日志

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

 

 

类加载器

类加载器(class loader)用来加载Java 类到Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:

Java 源程序(.java 文件)在经过Java 编译器编译之后就被转换成Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例。每个这样的实例用来表示一个Java 类。通过此实例的newInstance()方法就可以创建出该类的一个对象。

应用:类可以加载.class文件进内存,自然也可以加载其他的文件

文件路径:...cn/itcast/day1/config.prope

普通方法: InputStream ips = new FileInputStream("config.properties");

用类加载器进行加载:  InputStream ips = ReflectTest2.class.getClassLoader().getResourceAsStream("cn/itcast/day1/config.properties");
使用相对路径,便于其他电脑加载:InputStream ips = ReflectTest2.class.getResourceAsStream("resources/config.properties");
绝对路径:InputStream ips = ReflectTest2.class.getResourceAsStream("/cn/itcast/day1/resources/config.properties");
整个过程是用对象类ReflectTest2.class搞到它的类加载器getClassLoader()再加载资源。

 

 

内省

JavaBean是通过反射机制来完成的,javabean是一个特殊的java类。在javabean中,去掉get或set方法中的get或set后就可以得到其属性名,但其字母的大小写是有规定的,去掉get或set后,若第二个字母是小写的,则第一个字母也应小写;若都是大写的(不包括仅一个字母的情况,一个字母时为小写),则不变。
写JavaBean和写普通的类的目的是一样的,都是为了实例化该类的对象,然后利用这个对象,就可以使用这个类了。

JavaBean和普通的类区别如下: 

javabean是一个特殊的java类,这个类中的方法的名称符合约定的规则,例如,有getXxx和setXxx方法,javabean的属性名称,是通过其get和set方法得知的,而不能直接通过其属性得知(javabean的属性为private的)。

class Person

{

   private int x;

   public int getAge0

   {

           return x;

   }

   public void setAge(int age)

   {

         this.x=age;

   }

}

 Person person= new Person();

 String propertyName = "age"; //得到属性名称

1、使用 PropertyDescriptor 的 getReadMethod 方法获得只读方法

  PropertyDescriptor pd = newPropertyDescriptor(propertyName,person.getClass());
  Method methodGetAge =pd.getReadMethod(); 

  Object retVal =methodGetAge.invoke(person); //得到的属性值不明类型,所以使用Object

2、使用 PropertyDescriptor 的 getWriteMethod方法获得只写方法

  PropertyDescriptor pd = newPropertyDescriptor(propertyName,person.getClass());
  Method methodSetAge = pd.getWriteMethod();

  methodSetAge.invoke(person,20);  //设置属性值
  Eclipse 可协助重构、抽取方法

 

 

 

 

 

 

 

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

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值