- 浏览: 28383 次
- 性别:
- 来自: 北京
文章分类
最新评论
java中元注解有四个:
1.@Retention
2.@Target
3.@Document
4.@Inherited
1.@Retention
:注解保留的位置
@Retention(RetentionPolicy.SOURCE) :
注解保留在源代码中,class文件中不包含,
功能是与编译器交互,用于代码检测。
如@Override,@Suppress Warings。
额外效率损耗发生在编译时
@Retention(RetentionPolicy.CLASS) :
默认的保留策略,注解会在class字节码文件中在,
但运行时无法获得,<br/>这个级别需要添加JVM加载
时候的代理(javaagent),
使用代理来动态修改字节码文件
@Retention(RetentionPolicy.RUNTIME):
注解会在class字节码文件中存在,在运行时可以通
过反射获取到
2.@Target
: 注解的作用目标
@Target(ElementType.FIELD):作用于(定义)字段枚举常量(注解)
@Target(ElementType.TYPE) :作用于(定义)接口、类、枚举、注解(注解)
@Target(ElementType.METHOD) :作用于(定义)方法(注解)
@Target(ElementType.PARAMETER) :作用(定义)方法参数(注解)
@Target(ElementType.CONSTRUCTOR) :作用(定义)构造函数(注解)
@Target(ElementType.LOCAL_VARIABLE):作用(定义)局部变量(注解)
@Target(ElementType.ANNOTATION_TYPE):作用(定义)注解
@Target(ElementType.PACKAGE) :作用包
3.@Document
: 该注解将被包含在javadoc中
4.@Inherited
:说明子类可以继承父类中的该注解
说明:
@interface 是自定义注解的写法,与接口不同
自定义注解可以显示传值,或隐式默认值
例如:
public @interface DoSomething {
public String name() default "write";
}
显示:
@DoSomething(name = "walidake")//可以显式传值进来,此时
name=walidake
public class UseAnnotation {
}
隐式:
@DoSomething//如果不传值,则默认name=我们定义的默认值,即我们上面
定义的"write"
public class UseAnnotation {
}
当注解含有value()时不需要指定具体名称
public @interface DoSomething {
public String value();
public String name() default "write";
}
@DoSomething("walidake")
public class UseAnnotation {
//name的value值
}
“普通注解”只能用来注解“代码”,
而“元注解”只能用来注解 “普通注解”。
注解集成
public class UseInheritedAnnotation{
@UnInheritable
@Inheritable
public static class Super{
}
public static class Sub extends Super {
}
public static void main(String... args){
Super instance=new Sub();
System.out.println(Arrays.toString(instance.getClass().getAnnotations()));
}
}
自定义注解语法格式:
public @interface 注解名 {定义体}
经典案例:mybatis mapper接口的调用实现
以上一般在自定义Field Method Class 注解中使用
5.@Override
:用于标识该方法继承自超类<br/>当父类的方法被删除或修改了,编译器会提示错误信息
6.@Deprecated
:表示该类或者该方法已经不推荐使用<br/>如果用户还是要使用,会生成编译的警告
7.@SuppressWarnings
:用于忽略的编译器警告信息
等等
后续章节(二) mybits 注解模拟
(三) 使用场景分析与举例(Method 模板,节省代码量,简洁,减少重复代码)(Field参数默认值设置,减少重复代码)
1.@Retention
2.@Target
3.@Document
4.@Inherited
1.@Retention
:注解保留的位置
@Retention(RetentionPolicy.SOURCE) :
注解保留在源代码中,class文件中不包含,
功能是与编译器交互,用于代码检测。
如@Override,@Suppress Warings。
额外效率损耗发生在编译时
@Retention(RetentionPolicy.CLASS) :
默认的保留策略,注解会在class字节码文件中在,
但运行时无法获得,<br/>这个级别需要添加JVM加载
时候的代理(javaagent),
使用代理来动态修改字节码文件
@Retention(RetentionPolicy.RUNTIME):
注解会在class字节码文件中存在,在运行时可以通
过反射获取到
2.@Target
: 注解的作用目标
@Target(ElementType.FIELD):作用于(定义)字段枚举常量(注解)
@Target(ElementType.TYPE) :作用于(定义)接口、类、枚举、注解(注解)
@Target(ElementType.METHOD) :作用于(定义)方法(注解)
@Target(ElementType.PARAMETER) :作用(定义)方法参数(注解)
@Target(ElementType.CONSTRUCTOR) :作用(定义)构造函数(注解)
@Target(ElementType.LOCAL_VARIABLE):作用(定义)局部变量(注解)
@Target(ElementType.ANNOTATION_TYPE):作用(定义)注解
@Target(ElementType.PACKAGE) :作用包
3.@Document
: 该注解将被包含在javadoc中
4.@Inherited
:说明子类可以继承父类中的该注解
说明:
@interface 是自定义注解的写法,与接口不同
自定义注解可以显示传值,或隐式默认值
例如:
public @interface DoSomething {
public String name() default "write";
}
显示:
@DoSomething(name = "walidake")//可以显式传值进来,此时
name=walidake
public class UseAnnotation {
}
隐式:
@DoSomething//如果不传值,则默认name=我们定义的默认值,即我们上面
定义的"write"
public class UseAnnotation {
}
当注解含有value()时不需要指定具体名称
public @interface DoSomething {
public String value();
public String name() default "write";
}
@DoSomething("walidake")
public class UseAnnotation {
//name的value值
}
“普通注解”只能用来注解“代码”,
而“元注解”只能用来注解 “普通注解”。
注解集成
public class UseInheritedAnnotation{
@UnInheritable
@Inheritable
public static class Super{
}
public static class Sub extends Super {
}
public static void main(String... args){
Super instance=new Sub();
System.out.println(Arrays.toString(instance.getClass().getAnnotations()));
}
}
自定义注解语法格式:
public @interface 注解名 {定义体}
经典案例:mybatis mapper接口的调用实现
以上一般在自定义Field Method Class 注解中使用
5.@Override
:用于标识该方法继承自超类<br/>当父类的方法被删除或修改了,编译器会提示错误信息
6.@Deprecated
:表示该类或者该方法已经不推荐使用<br/>如果用户还是要使用,会生成编译的警告
7.@SuppressWarnings
:用于忽略的编译器警告信息
等等
后续章节(二) mybits 注解模拟
(三) 使用场景分析与举例(Method 模板,节省代码量,简洁,减少重复代码)(Field参数默认值设置,减少重复代码)
发表评论
-
设计模式之——靠谱的单例模式
2017-10-31 23:44 442修改了一下,还是推一下吧,以前工作中见过很多单例都是存在些 ... -
设计模式之——抽象工厂模式
2017-10-29 23:05 426转载至http://blog.csdn.net/jason05 ... -
设计模式之——简单工厂模式
2017-10-28 04:13 310就是建立一个工厂 ... -
设计模式之——装饰者模式
2017-10-22 22:23 329装饰者模式要点: 1. 装饰着与被装饰者拥有共同 ... -
设计模式之——观察者模式
2017-10-19 00:59 315原摘取至百度百科 简 ... -
设计模式之——策略模式
2017-10-16 20:29 453关于设计模式推荐《Head First 设计模式》 第一次感觉 ... -
静态内部类与非静态内部类的区别
2017-07-20 23:23 507今天看到一本书中举例使用了,静态内部类, 不是太了解 ... -
线程的三种实现方式
2015-05-31 13:13 1521Java线程的三种实现方式: 大家通常了解的是Thread类与 ... -
JDK的动态代理
2015-05-29 00:49 383直接贴代码了, 先理解 ... -
JAVA守护线程
2015-05-20 22:10 556一直以为守护线程,是一个线程对另一个线程的守护(一个服务线 ... -
ReenTrantLock 与synchronized的区别与使用
2015-05-19 21:41 429java锁就Lock与synchronized两种,Ree ... -
经典容器 数组/链表/队列/散列表/映射表,及相关内容的排序方式
2015-05-07 01:13 632Java 经典容器 数组/链表/队列/散列表/映射表,及相 ... -
for(int i=0;i<list.size;i++) 循环为什么慢
2015-05-03 12:32 1699链表循环使用(for int i=0;i<list. ... -
数组与ArrayList
2015-05-03 00:03 494首先纠正 ... -
java泛型学习笔记
2015-04-28 22:59 1796写这个博文的目的:1.校验自己的学习成果的不足,与错误的地 ...
相关推荐
java 自定义注解验证 可自己添加所需要的注解,本案例中只写了三个自定义注解类 本案例只花了半天时间,如有不好之处请多提提意见。谢谢!
包括Java自定义注解以及包括自定义注解的应用实例。以及注解相关知识的注解
这个一个自定义注解实现给注解传递伪动态参数的小案例,可以在此自定义注解的基础上来记录接口的调用记录。
java自定义注解实践,介绍详细!值得参考
通过一个超市的自动售卖机的例子,详细说明了java的自定义注解的使用。
自定义注解实现由类自定生成数据库中的表,适合各种类型的数据库,本案例主要实现的时sql server和oracle
自定义注解和通过反射获取注解
3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...
简单demo,导入即可运行。
Java基础复习笔记12Java自定义注解Annotation的使用
java 元注解+拦截器实现自定义注解 @CmwAutoWired:自定义依赖注入 注意:注入的接口和实现类需要在同一包名下,注解的是类则无限制 @FieldAnnotation:自定义属性注解 @MethodAnnotation:自定义方法注解 @...
利用java注解机制,实现自定义注解实例,例子中实现了简单的注解赋值和获取并打印值。
java自定义 注解 annotation、标签库tag、监听listener、junit简单测试代码
excel导入动态校验,自定义注解动态校验
主要介绍了java 自定义注解的实例详解的相关资料,需要的朋友可以参考下
自定义注解实现拦截sql,并在sql中增加相应的条件 。 对应博客: https://blog.csdn.net/qq_37716298/article/details/120659139
内容:拦截器的使用很简单,定义一个自己的拦截器,向配置中添加一下就可以使用。为了方便,之后又引入了注解。本文就将用简洁的代码构建一个springboot的拦截器。...oNoNeedToken.java 自定义注解
自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回...
Java自定义注解程序Demo
# 自定义注解的规则: - 1.定义注解 - 2.定义注解的切面 - 3.使用注解