主要学习了java的注解和反射。
1、注解
1、内置注解
@Override
表示重写了父类的方法,有此注解的方法必须是重写了其父类的方法。
@Deprecated
表示该方法不推荐被使用或者有更好的方法代替,在其他地方使用该方法时会被划掉。
@SuppressWarnings(“all”)
表示不检测警告。
2、元注解
可以给内置注解进行注解的注解。
@Target()
表示注解可以使用的位置,有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE@Retention()
表示什么时候执行注解。有source、class、runtime,一般自定义注解都写runtime。
级别:runtime>class>source。
@Documented
表示注解会被javadoc写入。
@Inherited
表示子类可以继承父类的注解。
3、自定义注解
格式:
1 | (ElementType.TYPE) |
2、反射
1、获取Class对象
1 | import java.lang.annotation.*; |
2、ORM(对象关系映射)
通过反射获取对象的注解及其值。
1 | import java.lang.annotation.*; |
可以通过注解内的值来动态生成sql语句来建表等等,多用于框架。
3、常用方法
- Class对象.getAnnotations()—获取类对象的所有注解
- Class对象.getDeclaredFields()—获取类的所有属性,无论是private还是public等等
- Class对象.getDeclaredMethods()—获取类的所有方法
- 获取类的方法后可以执行类的方法,类的方法对象.invoke(对象,参数),可以执行该方法,如果方法是私有的,则需要关闭权限检查,可以使用:类的方法对象.setAccessible(true)来关闭权限检查。