java_注解
2019-05-23 09:56:16来源:博客园 阅读 ()
java_注解
什么是注解?
首先需要明确一个概念,注解也是类,在内存中有着对应的class文件
注解是JDK1.5的特性
注解相当于一种标记,是类的组成部分,可以给类携带一些额外的信息.
标记(注解)可以加载包,字段,类,方法,方法参数以及局部变量上.
注解是给编译器或者jvm看的,编译器或jvm可以根据注解来完成对应的功能.
注解的作用?
注解的作用主要就是给程序带入参数
以下几个常用操作中都使用了注解
- 生成帮助文档
@author 用来标识作者名称
@version 用来标识对象的版本号,适用范围:文件,类,方法
- 编译检查
@override 用来告诉编译器该方法是重写父类中的方法,如果不存在或者有错误,则编译失败
- 框架的配置(框架等于代码+配置)
还有一些较为常用的注解:
@supressWarning 警告不显示,可以传入参数,参数为all时整个类都不显示警告
@FunctionalInterface 函数式接口(只有一个自己特有抽象方法的接口)
@Test junit测试
@Deprecated 过时,不建议使用
什么是Junit?
1).什么是"JUnit":它是一个第三方的软件包,它的作用:让我们可以很方便的进行“单元测试”。
2).以后我们的程序会非常庞大,模块非常多,方法也非常多,此时测试某个方法就很不方便-需要启动程序,
然后一步一步操作才能到达我们想测的方法。
3).JUnit的功能:可以代替main()方法,在任意的类中可以测试运行某个方法。达到方便测试的目的。
4).JUnit是基于“注解”的。
Junit的使用@Test
Junit是java语言的单元测试框架,简单理解可以取代java程序中的main方法,Junit属于第三方工具
在需要测试的方法声明上一行加上@Test,导入相应jar包(很多开发环境已经集成了Junit),就可以直接测试方法
JUnit单元测试_其它注解
1).@Before:在@Test之前执行。每个@Test方法执行前都要执行一次@Before。@Before也可以有多个,执行顺序:
1).按方法名的长度:降序;
2).再按方法名:降序;
2).@After:在@Test之后执行。每个@Test方法执行后,都要执行一次@After。@After也可以有多个,执行顺序:
1).按方法名长度:升序;
2).再按方法名:升序
3).@BeforeClass : 用在静态方法上,在所有的@Before之前执行,而且只执行一次。
4).@AfterClass : 用在静态方法上,在所有的@After之后执行,而且只执行一次。
注解_自定义注解的基本格式
public @interface MyAnno{
}
但这个注解定义后,有两个问题:
1).这个注解可以用在类的任何位置--使用"元注解"来解决;
2).我们的注解没有起到任何作用--使用"自定义的注解解析器"来解决;
注解_元注解
是自定义注解使用的
1).什么是“元注解”:它也是一个“注解”,但这个注解必须用在“注解的定义”上。
它可以约束我们定义的注解:
1).使用的位置:@Target
1).类 :ElementType.TYPE
2).成员属性 :ElementType.FIELD
3).成员方法 :ElementType.METHOD
4).构造方法 :ElementType.CONSTRUCTOR
5).局部变量上 :ElementType.LOCAL_VARIABLE
6).形参: :ElementType.PARAMETER
2).生命周期:@Retention
' 1).源码:不会被编译到class中。 RetentionPolicy.SOURCE
例如:@Overrite
2).class中:会存在于源码、class文件中,但运行时不会被加载到内存:RetentionPolicy.CLASS
3).运行时(内存):会存在于源码、class文件、运行时内存:RetentionPolicy.RUNTIME
例如:JUnit的@Test....
2).示例代码:
//约束注解只能在类上使用 @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnno { }
注解_解析注解
1).模拟JUnit的注解解析器。
前提:
1).自定义注解@MyTest,必须是:用在方法上,生命周期:运行时;@MyTest
2).使用自定义注解;Student
3).自定义注解解析器,使用反射解析“使用自定义注解的类”,根据使用注解的情况,来决定怎样执行。MyAnnoTest
2).见:demo10
注解_定义包含属性的注解
1).格式:
public @interface 注解名{
数据类型 属性名() [default 默认值];
}
数据类型:各种基本类型、String、枚举类型。注意:没有包装类型。
属性名:自定义标识符;
注意:如果注解中只有一个属性,而且叫:value
使用注解时,可以省略这个“属性名”
@CheckName(value = 1) public void show(){ System.out.println("show..."); } @CheckName(value = 3) public void aaa(){ System.out.println("aaa..."); } @CheckName(2)//直接写值 public void x(){ System.out.println("x..."); } @CheckName(4) public void bbb(){ System.out.println("bbb..."); }
默认值:如果定义了“default 默认值”,在使用注解时,不是必须要为这个属性定义值,
使用默认值。但如果没有定义“default 默认值”,在使用注解时,必须显示的为这个属性设置值。
原文链接:https://www.cnblogs.com/aihuadung/p/10910762.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:java面向对象练习题
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash