黑马程序员-基础加强-反射(2)&内省&注解-No.08

来源:互联网 发布:java判断float是否为0 编辑:程序博客网 时间:2024/04/25 20:51

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

一、Hashcode分析

把一个HashSet集合抽象地想象成由多个区域组成的,每个区域对应一组有相似规则的哈希值,往集合中添加对象时,先寻找同自己相似规则的哈希值的那块区域,找到后,然后在这块区域里用hashCode值挨个挨个比较,如果有相同的则不存入,没有则存入。

    如果有这样一个程序,不断地对集合进行添加、修改和删除等操作,因为有可能修改了对象的hashCode值,使对象从此不被发现,则有可能造成内存泄露,所谓内存泄露,就是对象没有了,但实际上一直占有内存空间,不被释放。所以Java语言中发生内存泄露是有可能的。

二、反射

1、反射的作用——实现框架(使用配置文件中的信息用反射机制去调用需要的类)

2、框架与工具类的区别:工具类被用户的类调用,框架则是调用用户提供的类

3、读取配置文件的方法并创建配置文件中类的代码示例:

(例中假如当当前路径有一个配置文件config.properties时)

public static void main(String[] args) throws Exception {//创建一个输入流InputStream ips = new FileInputStream("config.properties");Properties props = new Properties();//把config.Properties的键值信息加载过来props.load(ips);//关掉的是资源,ips在内存的对象由垃圾回收机制处理ips.close();//传递键的参数,key指具体的键String className = props.getProperty("key");//通过从配置文件获取来的信息构造需要的类实例Object obj = (Object)Class.forName(className).getConstructors();     ·······················}

(加载配置文件的方式有多种,可通过当前类的Class实例获得类加载器调用getResourceAsStream("路径")方法获得,这种方式在SSH中常用,但对配置文件只能读,不能写)

三、内省

1、JavaBean,特殊的Java类,该类中的方法符合某种特殊的规则,即所有的属性是通过setget方法获得知晓的,属性根据方法名称得来,用来多个模块间传递信息

2、IntroSpector类是用来操作JavaBean类的

3、BeanUtils以字符串对JavaBean进行操作

4、PropertyUtils以属性类型本事进行操作

5、Java7新特性:Map map = {name:"heima", address:"beijing"}

四、注解

1、注解是JDK1.5的新特性,使用注解已是一种趋势

2、一个注解就是一个类,注解一次相当于实例了一个对象

3、注解相当于一种标记,可以修饰任何程序元素

4、Annotation Types 注解类型:

@Deprecated——>标识已过时的;(作用与Java源文件)

    @Override——>限定重写父类方法;(作用与Java源文件)

    @SuppressWarmings——>取消编译器警告 (作用与Java运行时期)

5、@Retention元注解的三种取值:(枚举值)

RetetionPolicy.SOURCERetetionPolicy.CLASSRetetionPolicy.RUNTIME 

6@Target——设置被修饰的Annotation能作用于类的哪些成员上

7、自定义注解及属性

public @interface AnnotationTest {

    String name() default "heima";  //指定了默认值使用时就可以不用指定值了

    int age();

    }

8、访问Annotation的方法

  getAnnotation(Class<T> annotationClass):返回该对象上存在的指定类型的注解;

  Annotation[] getAnnotations():返回该程序上的所有注解

  boolean isAnnotationPresent(指定注解类型):是否存在指定注解类型

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

详细请查看:http://edu.csdn.net/heima 

原创粉丝点击