-
注解的语法要求
使用@interface 作为关键字
成员以无参数无异常方式声明
可为成员指定默认的值
成员类型包含所有基本类型,还有String、Class、Annotation、Enumeration
注解只有一个成员的时候,这个成员名字必须为value
注解可以没有成员,没有成员的注解称为标识注解
元注解,就是在定义注解的时候写的注解
@Target:表示注解的作用域(构造方法、字段声明、局部变量、方法、包、参数说明、类接口)
@Retention:生命周期(source只显示在源码,class会编译时会记录到class中运行时忽略,runtime运行时存在,可以通过反射读取)
@Inherited:表示允许被继承
@Documented:生成javadoc的时候包含注解
查看全部 -
注解的分类
按运行机制:
源码注解:只存在源码中,编译成class就不存在了
编译时注解:源码和class中都存在
运行时注解:在运行阶段还起作用,甚至影响运行逻辑
按照来源分:
来自jdk的注解:
来自第三方的注解:
我们自己定义的注解:
元注解:注解的注解
查看全部 -
@Autowired 自动注入对象就像在 application中注入一个bean一样,而且还不需要getset方法
查看全部 -
jdk再带的注解
@Override 表示该方法是覆盖了父类方法的
@Deprecated 将方法标识为过时
@Suppvisewarnings 可以忽略一些警告
查看全部 -
学习注解的目的:
能看得懂别人的代码,特别是框架代码
使自己的代码变的简洁清晰
让别人高看我们一眼
查看全部 -
解析注解:
查看全部 -
元注解:@Target
查看全部 -
定义自定义注解时,可以指定自定义注解作用范围:构造方法、函数、局部变量、类等。
查看全部 -
Java常见注解
查看全部 -
解析注解:
概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
Ps1:RetentionPolicy.RUNTIME时,才能获取到注解,SOURCE和CLASS都获取不到注解。
Ps2:@Inherited对implements不起作用,对extends起作用(只会继承类上面注解,而不会继承该类方法中的注解)。
Ps3:instanceof概念:用来判断内存中实际对象A是不是B类型。
例子:
一般用来做类的类型判断的:a1,a2继承自A;b继承自B;
a1 instanceof A 返回 true;
a2 instanceof a1 返回 false;
a1 instanceof B 返回 fasle查看全部 -
工程生成javadoc
查看全部 -
使用自定义注解
使用注解的语法:
@<注解名>(<成员名1>=<成员值1>,<成员名2>=<成员值2>,...)
@Description(desc ="I am eyeColor",author="C boy",age=18)
public String eyeColor(){
return "red";
}查看全部 -
Java自定义注解
1、自定义注解的语法要求
a、使用@interface关键字定义注解
b、成员以无参无异常方式声明
c、可以用default为成员指定一个默认值
d、如果注解只有一个成员,则成员名必须取名value(),在使用时可以忽略成员名和赋值号(=);
e、成员类型是受限的,合法的类型包括原始类型String,Class,Annotation,Enumeration
f、注解类可以没有成员,没有成员的注解称为标识注解
2、元注解
@Documented 生成javadoc时包含注解
@Inherited 允许子类继承
@Retention(RetentionPolicy.RUNTIME):声明周期
[SOURCE只在源码显示,编译时会丢弃;
CLASS编译时会记录到class中,运行时忽略;
RUNTIME运行时存在,可以通过反射读取]
@Target({ElementType.METHOD})
[CONSTRUCTOR构造方法声明;
FIELD字段声明;
LOCAL_VARIABLE局部变量声明;
METHOD方法声明;
PACKAGE包声明;
PARAMETER参数声明;
RYPE类接口]查看全部 -
注解的分类
1、按照运行机制分为
源码注解:注解只在源码中存在,编译成.class文件就不存在了
编译时注解:注解在源码和.class文件中都存在(如:JDK内置系统注解)
运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解(如:Spring中@Autowried)
2、按照来源分为
JDK内置系统注解、元注解、自定义注解、第三方注解元注解是对注解的注解。
查看全部 -
Java中的常见注解
查看全部
举报