黑马程序员之反射与内省
来源:互联网 发布:php培训系统教程下载 编辑:程序博客网 时间:2024/06/05 10:07
---------------------- android培训、java培训、期待与您交流! ----------------------
框架的概念及用反射开发框架的原理:学反射最主要就是为了写框架:通过反射来调用以后写的类
我们用反射要解决以后的问题:不能够new一个对象了,只能用反射
写一个properties文件来配置属性
首先加载properties文件:
InputStream ips=new FileInputStream(“config.properties”);
Properties props=new Properties();
props.load(ips);
ips.close();//把操作系统的资源释放;
String className =props.getProperty(“className”);
Collection collection =(Collection)Class.forName(className).newInstance();
这样就利用反射创建出了集合对象了
//用类加载器的方式管理资源和配置文件
配置文件要用完整路径,但是完整路径不是硬编码,是运算出来的
类名.class.getClassLoader().getResourceAsStream(“config.properties”);//在ClassPath路径下去找要加载的文件
注意:在Eclipse中在原目录下会自动保存。真正运行时是找到ClassPath目录下的
只要用类加载器加载配置文件,那么我们就把配置文件放在classPath目录下
在Class下也提供了getResourceAsStream()方法,用相对目录就可以;
但是内部都是调用的getClassLoad();
//内省引出JavaBean:
JavaBean是一种特殊的java类里面有get和set方法
private int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
JavaBean 的属性是通过共有的方法来判断的
特点:去掉get和set,剩下的就是属性名
并且如果第二个字母是小的,那把第一个字母变成小的
并且如果第二个字母是大的,那把第一个字母保持不变
//用内省去操作JavaBean
如果在两个模块之间传递许多个信息,可以将这些信息封装到一个javaBean中,这种javaBean的实例对象称之为值对象(Value Object,简称VO)这些信息在类中用私有字段来存储,如果读取和设置这些字段的值,则通过一些相应的方法来访问
用内省的方式读取javaBean中的私有属性:
首先创建一个对象javaBean的对象pt1
然后:
PropertyDescriptor
pd=new PropertyDescriptor(propertyName,pt1.getClass());
Method methodGetX=pd.getReadMethod();
Object retVal=methodGetX.invoke(pt1);
设置一个属性:
Method methodSetX=pd.getWriteMethod();
methodSetX.invoke(pt1,7);
像上面的操作是可以抽出一个方法的一个是setProperty()
getProperty()
用beanInfo改写:BeanInfo beanInfo=introspector.getBeanInfo(pt1.getClass);
PropertyDescriptor[]pds=beanInfo.getPropertyDescriptors();
Object retVal=null;
If(PropertyDescriptor. pd:pds){
If(pd.getName().equals(propertyName)){
Method methodGetX=pd.getReadMethod();
retVal=methodGetX.invoke(pt1);
break;
}
}
//使用BeanUtils工具包操作JavaBean:
BeanUtils.getProperty(pt1,”x”);
BeanUtils.setProperty(pt1,”x”,”9”);
操作Data对象:BeanUtils.setProperty(pt1,”birthday.time”,”111”);
BeanUtils.getProperty(pt1,”birthday.time”);支持属性连
//java7的新特性:
Map map={age:7,name:”zhang”}BeanUtils.setProperty(map,”name”,”zxx”);
propertyUtils.setProperty(pt1,”x”,9);
propertyUtils.getProperty(pt1,”x”);返回的类型是integer
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
- 黑马程序员之反射与内省
- 黑马程序员-笔记-13-反射与内省
- 黑马程序员-笔记-反射与内省
- 黑马程序员_java的反射与内省
- 黑马程序员—浅谈反射与内省
- 黑马程序员 反射、内省
- 《黑马程序员》反射机制(二)与内省
- 黑马程序员---张老师高新技术之反射,内省及注解
- 黑马程序员:基础加强之反射机制和内省
- 黑马程序员——java加强之反射、内省
- 黑马程序员-----程序员之路_____JavaBean与内省、注解
- 黑马程序员——JAVA(反射,内省)
- 黑马程序员 高新技术<二> 反射和内省
- 黑马程序员--反射、内省、类加载器
- 黑马程序员 Java高新技术--反射和内省
- 黑马程序员_反射、内省、注解
- 黑马程序员--进阶篇:反射,内省
- 黑马程序员_反射、内省、泛型
- Google天气预报API的使用
- 只言片语 挠头的小问题不断更新
- linux 驱动 printf printk
- dell硬件收集工具
- 【最新】(免费)网盘使用对比/评测
- 黑马程序员之反射与内省
- Table中单元格的移动
- /etc/fstab文件详解
- 一个简单的C#多线程间同步的例子
- org.apache.commons.fileupload.FileItemFactory-api
- IE 7 position:relative bug
- Symbols Introduction
- android image level的妙用
- html中的背景图片不能充满整个浏览器