您的位置:首页 > 职场人生

黑马程序员_高新技术学习笔记(第五章_下)

2011-09-02 23:40 357 查看
----------------------
android培训、java培训、期待与您交流! ----------------------
数组反射

Class clazz = pt1.getClass

clazz.isArray(){

Array.getLength(obj)

for(int i-0;i<length;i++)

{

System.out.println(Array.get(obj,i));

}

else{

System.out.println(obj);

}

}

得到数组的元素类型

int[] a = new int[3];

a[0].getClass().getName();

Collection collections = new ArrayList();//HashSet()

ArrayList:放的对象的引用

HashSet:比较对象 remove

pt1 = new Reflect(3,3);

pt2 = new Reflect(5,5);

pt3 = new Reflect(3,3);

collections.add(pt1);

collections.remove();

collections.size();

==相等equals肯定等

要想pt1和pt3相等必须改写equals和hashCode方法

去掉hashcode方法,pt1.equals(pt3);结果有多种可能

hashCode为了提高效率,把集合分成若干区域,每个要存进来的对象可以算出一个值,根据值选择相应的区域

x%32取模

hashCode 是根据内存地址计算的

对象存储集合是hash算法实现的集合,hashCode方法才有意义

当一个对象被存进HashSet集合中,就不要修改参与hash值计算的字段值了

否则就内存就溢出、泄漏了

框架的概念及用反射技术开发框架的原理

config.properties

className=java.util.ArrayList

InputStream ips = new FileInputStream("config.properties");

Properties props = new Properties();

props.load(ips);

ips.close();//告诉操作系统释放和自己关联的系统资源

String className = props.getProperty("className");

HashMap VS Properties

Properties 扩展了 HashMap 的功能

Properties可以从文件读,也可以写入文件 key value

配置文件在工程目录下

java MyClass xxx.file

绝对路径d:\\xxxx\\yyyy

用户在配置文件中定义文件路径

javaweb api getRealPath 得到项目真实路径+项目内部路径

ReflectTest2.class.getClassLoader().getResourceAsStream(文件目录"cn/itcast/day1/config.properties")//利用classLoader在classpath中定义的目录中寻找

框架技术中应用比较多,只读,不能存储

InputStream ips = ReflectTest2.class.getResourceAsStream("config.properties");没有斜杠打头表示相对路径resouces/

/cn/itcast/day1/resources/congfig.properties 是相对于classpath的根目录

内省

IntroSpector

主要对javabean进行操作

javabean特殊的java类,方法名称符合某种规则

int getAge()

void setAge(int age)

把一个java类当作javabean来看,这个javabean的属性是根据get,set方法名称来推断的

String propertyName = "x";

"x"》》》getX

PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());

Method MethodGetX = pd.getReadMethod();

Object retVal = MethodGetX.invoke(pt1);

pd.getWriteMethod()

抽取方法

refactor》》》Extract Method

抽取的方法参数 修改成Object 对任何java类都起作用了

输入的常量要用变量替换

BeanInfo beanInfo = java.bean.introspector.getBeanInfo(pt1.getClass())

PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();

for(PropertyDescriptor pd:pds)

{

pd.getName().equals(propertyName);

}

Object retValue=null;

for(){}

return retValue;

beanutils

logging

BuildPath

BeanUtils.getProperty(pt1,"x")

//字符串 web开发中浏览器传入的参数都是字符串类型自动转换

属性级联

copyProperties Map describe

javabeam>>>>map

map(age:7,name:"hp")

map>>>>javabean

//java7的新特性

Map map = (name:"zxx",age:18);

BeanUtils.setProperty(map,"name","lhm");

PropertyUtils.setProperty(pt1,"x",9)//这里只能用int 9

----------------------android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: