JDK5.0新特性系列---9.注释功能Annotation

简介:

import java.lang.annotation.ElementType;

import java.lang.annotation.Target;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

/**关键技术

* 1.Java常用的内置注释

* @Override放在方法的修饰符前,表示该方法覆盖了父类的同名同参数方法,如果该方法没有覆盖父 类的方法而使用了该注释,则编译器会报错

* @Deprecated放在变量和方法的访问修饰符前,表示该变量或者方法已经不推荐使用,通常是因为它很危险或者存在更好的选择。

* 2.可以自定义注释类型,与enum定义枚举类型一样,使用@interface定义注释类型

* 3. 能在自定义的注释中定义其它类、属性和方法。定义属性时,以属性名为方法名,以属性类型为方法的返回值类型,方法后接default关键字表示属性的默认值。如"String name();"表示该注释类型具有name属性,类型为String;"int age() default 20;"表示该注释具有age属性,类型为int,默认值为20.

* 4. 可以在自定义的注释类型的声明中添加注释,即注释的元注释。Java2个常用的内置元注释:

* @Target指定Annotation类型可以应用的程序元素,程序元素的类型由java.lang.annotation.ElementType枚举类定义。如ElementType.METHOD表示该注释类型只能用于方法声明中。

* @RetentionJava编译器处理Annotation类型的方式有关,这些方式由java.lang.annotation.RetentionPolicy枚举值定义。如RetentionPolicy.RUNTIME表示该注释类型 将被编译成class文件

* @Document指明需要在Javadoc中包含注释(默认是不包含的)

*/

public class AnnotationData {

@Deprecated private String name;

public AnnotationData(String name){

this.name = name;

}

//方法声明中使用了内置的@Override元数据,表示该方法覆盖了父类的同名同参数方法

//如果父类不存在该方法,则编译不会通过

@Override public String toString(){

return super.toString() + this.name;

}

@Override public int hashCode(){

return toString().hashCode();

}

/**方法中使用了内置的@Deprecated元数据,表示该方法已经不被推荐使用了*/

@Deprecated public String getName(){

return name;

}

public String getAnnotationDataName(){

return this.name;

}

//下面定义元数据类型

//使用@interface声明Annotation类型

public @interface MyAnnotation{

//在元数据中可以定义其它类

public enum Severity{

CRITICAL,IMPORTANT,TRIVIAL,DOCUMENT

};

//定义数据类型不需要定义gettersetter方法

//只需要定义一个以成员名称命名的方法,并指定返回类型为需要的数据类型

//default关键字为Annotation类型的成员设置默认值

Severity severity() default Severity.IMPORTANT;

String item();

String assignedTo();

String dateAssigned();

}

//使用自定义的Annotation类型,在使用时,

//如果Annotation类型在其他的包下,需要与使用类一样,import

@MyAnnotation(severity = MyAnnotation.Severity.CRITICAL,

item = "Must finish this method carefully",

assignedTo = "Programmer A",

dateAssigned = "2006/09/10")

public void doFunction(){

//do something

}

//下面再定义一个Annotation类型,使用了元数据的元数据

//@Retention(RetentionPolicy.RUNNTIME)这个meta-annotation

//表示了此类型的annotation将编译成class文件,而且还能被虚拟机读取

//@Target(ElementType.METHOD)表示此类型的annotation只能用于修饰方法声明

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface MyNewAnnotation{

}

}




本文转自远哥博客园博客,原文链接:http://www.cnblogs.com/taven/archive/2011/12/17/2291463.html,如需转载请自行联系原作者

相关文章
|
Java 测试技术 调度
JDK21有没有什么稳定、简单又强势的特性?
这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。
JDK21有没有什么稳定、简单又强势的特性?
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
216 7
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
166 1
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
204 3
|
存储 安全 Java
JDK1.8 新的特性
JDK1.8 新的特性
228 0
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
9月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装openjdk-6/7/8-jdk的步骤
在整个安装过程中,你可能需要管理员权限,因此你可能要使用 `sudo` 来获取必要的权限。记得做完每一个步骤后,都要检查输出,以确保没有发生错误,并且每项操作都成功完成。如果在安装过程中遇到问题,查看 `/var/log/` 下的日志文件对于问题的解决可能是有帮助的。
588 21
|
9月前
|
IDE Ubuntu Java
在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境的指南。
完成以上步骤后,您将在Ubuntu 18.04系统上成功安装并配置了Eclipse IDE,它将与JDK 8兼容,可以开始进行Java开发工作。如果遇到任何问题,请确保每一步骤都正确执行,并检查是否所有路径都与您的具体情况相匹配。
366 11
|
11月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
527 41
|
8月前
|
Ubuntu Java Android开发
在Ubuntu 18.04上安装与JDK 8兼容的Eclipse版本的步骤。
安装过程结束后,您就可以开始使用Eclipse来开发您的Java项目了,并且确保它与JDK 8兼容无误。这个过程涉及的是一个基本的安装流程,针对使用Java 8的用户,Eclipse的其他配置和插件安装根据个人开发环境和需求来定制。
496 0