注解
来源:互联网 发布:单片机驱动电机电路 编辑:程序博客网 时间:2024/05/21 11:06
【参考资料】
注解(Annotation)自定义注解入门http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
个人理解,注解是作用于对象所属类的Class对象,而不是作用于某个具体的对象。
定义
可以使用public @interface XXX来定义一个注解类型,如下所示。在定义注解的时候,需要使用到元注解,关于元注解的东西放到下篇再讲。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public@interfaceOverride {
}
在定义的时候还可以指定他的参数,并且可以使用default来指定默认参数值,如下所示。
1、注解参数可以使用的类型有
所有基本数据类型(int,float,boolean,byte,double,char,long,short)
String类型
Class类型
enum类型
Annotation类型
以上所有类型的数组
2、只能使用public修饰符,或不写
3、如果只有一个参数,一般该参数名为value,并且在后面使用的时候可以省略写value=,如@SuppressWarnings(value="all")省略写成@SuppressWarnings("all")
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public@interfaceCustomAnnotation {
String studentName() default"shadowfaxghh";
int age()default 0;
int id()default -1;
String[] schools() default {"人民路小学","建设路小学"};
}
使用
publicclass Test {
@CustomAnnotation
publicvoid test1(){
}
@CustomAnnotation(age=19, studentName="", schools={"XXX"})
publicvoid test2(){
}
}
解析
注解分为编译时注解和运行时注解,用途和解析也不相同,参见后面文章。
此外,Java当中提供了3个内置注解,这我们还经常遇到,如
@Override
表示一个方法打算重写父类中的另一个方法
@Override
public String toString(){
return"";
}
@Deprecated
表示已经过时,不鼓励使用这样的元素
@Deprecated
publicstaticvoidtest(){
}
publicstaticvoid main(String[]args) {
test();
}
@SuppressWarnings
用于抑制编译时的警告信息,参数value可选的值有
1.deprecation:使用了不赞成使用的类或方法时的警告;
2.unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics)来指定集合保存的类型;
3.fallthrough:当 Switch程序块直接通往下一种情况而没有 Break 时的警告;
4.path:在类路径、源文件路径等中有不存在的路径时的警告;
5.serial:当在可序列化的类上缺少serialVersionUID定义时的警告;
6.finally:任何 finally子句不能正常完成时的警告;
7.all:关于以上所有情况的警告。
@SuppressWarnings("all")
// @SuppressWarnings(value={"unchecked", "deprecation"})
publicstaticvoid test2(){
List list=new ArrayList();
}
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解
- 注解。
- 注解
- 注解
- 注解
- 注解
- linux raw sock发送RS报文
- Android使用Parcelable传递boolean、String、Class、List、Enum类型数据
- 三层架构
- Best Time to Buy and Sell Stock最大收益问题算法详解
- labview学习笔记01_顺序结构不能添加添加Add Sequence Local
- 注解
- WMI 的攻击,防御与取证分析技术之攻击篇 原文出自【比特网】,转载请保留原文链接:http://sec.chinabyte.com/353/13607853.shtml
- 关于mysql分组的探索
- 解决Glide加载图片中Url中有token保护问题.md
- 使用 Python 和 Flask 设计 RESTful API
- 解惑Class.forName("com.mysql.jdbc.Driver")
- PB如何禁止拖动带title标题的response窗口
- jenkins的安装和配置
- Android 6.0权限处理问题