注解与反射机制
注解
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已经预定义的类