注解与反射机制

注解

注解与反射机制

 

注解与反射机制

      Override表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写父类方法,则编译器会生成一种错误信息

想对一个方法进行override

       Alt+/

 

Override

 注解与反射机制

Deprecated

注解与反射机制

SuppressWarnings

注解与反射机制

注解与反射机制

 

自定义注解

注解与反射机制注解与反射机制

注解与反射机制

注解与反射机制注解与反射机制注解与反射机制

注解与反射机制注解与反射机制

放在方法前ok,放在类前就报错了,因为@Target的值是.METHOD

 

注解与反射机制

 

注解与反射机制

注解与反射机制

注解与反射机制

步骤:

    ①定义注解本身
    ②在类里面使用这个注解
    ③写一个解析程序把注解读出来,进行解析处理
(在框架里通常解析注解已经写好了,只需要我们会在类里面使用这个注解就ok了)

注解与反射机制下面没截全的都是生成getter和setter生成的

这两个都是注解程序

注解与反射机制注解与反射机制

这是解析程序

注解与反射机制

 

反射机制

    举一个看到过的例子,在实际开发中,我们需要把一个包中的class new出来,但是这个包中的类总是需要变动,那么怎么办,难道总是修改main方法中xxx=new xxx()吗。这样无疑是麻烦的。而运用反射。我们可以相应的增加一个配置文件,在里面记录包中所有的类名,包中类增加时就加一个类名,删除时就删除一个类名。让main方法去读取这个配置文件中的类名,通过反射获得实例,完全不用我们去修改main方法中的代码。

       说了这么多,那么我们的开发中,为什么不全部都用反射那?一个原因,开销,它的开销是什么昂贵的,所以尽量在最需要的地方使用反射。

 注解与反射机制

注解与反射机制注解与反射机制注解与反射机制

注解与反射机制

但是clazz和clazz2是同一个对象

 

注解与反射机制

Field是属性

Method是方法

Type是类

 

Class,Field,Method,Constructor等都是java已经预定义的类

 

注解与反射机制

注解与反射机制