源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java注解的全面分析

  • 时间:2020-09-24 14:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java注解的全面分析
全面解析java注解 [b]Java中的常见注解 [/b] [b]a.JDK中的注解[/b]     @Override 覆盖父类或者父接口的方法     @Deprecated 表示方法已经过时     @SuppressWarnings("deprecation") 忽略方法过时警告 [b]b.常见的第三方注解[/b]     例如Spring中的@Autowired(自动注入) 注解的分类 a.按照运行机制分     1.源码注解         注解只在源码中存在,编译成class文件就不存在了     2.编译时注解         注解在源码和class文件中都存在         eg:@Override、@Deprecated、@SuppressWarnings     3.运行时注解         在运行阶段还起作用,甚至会影响运行逻辑         eg:@Autowired b.按照来源分     1.来自JDK的注解     2.来自第三方的注解     3.自定义注解 c.元注解:注解的注解 [b]自定义注解[/b] 1.自定义注解的语法要求
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
  String desc();
  String author();
  int age() default 18;
}

注意: [list] [*]使用@interface关键字定义注解[/*] [*]成员以无参无异常方式声明[/*] [*]可以用default为成员指定一个默认值[/*] [*]成员类型是受限的,合法的类型包括原始类型以及String、Class、Annotation、Enumeration[/*] [*]如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)[/*] [*]注解类可以没有成员,没有成员的注解称为标识注解 [/*] [/list] 2.元注解 a.@Target({ElementType.METHOD,ElementType.TYPE}) 注解的作用域: [list] [*]ElementType.CONSTRUCTOR 构造方法声明[/*] [*]ElementType.FIELD 字段声明[/*] [*]ElementType.LOCAL_VARIABLE 局部变量声明[/*] [*]ElementType.METHOD 方法声明[/*] [*]ElementType.PACKAGE 包声明[/*] [*]ElementType.PARAMETER 参数声明[/*] [*]ElementType.TYPE 类、接口 [/*] [/list] b.@Retention(RetentionPolicy.RUNTIME) 注解的生命周期: [list] [*]RetentionPolicy.SOURCE 只在源码显示,编译时会丢弃[/*] [*]RetentionPolicy.CLASS 编译时会记录到class中,运行时忽略[/*] [*]RetentionPolicy.RUNTIME 运行时存在,可以通过反射读取 [/*] [/list] c.@Inherited 标识性的元注解:允许子类继承 d.@Documented 生成javadoc时会包含注解 使用自定义注解 语法:@注解名(成员1=成员值1,成员2=成员值2)
@Description(desc="I am demo",author="boy",age=18)
public void demo(){}
[b]解析注解 [/b] 概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑 以上就是java 注解的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部