JavaEE注解讲解
JavaEE里面不乏会出现很多很多的注解,这里到底是什么意思呢,他们的作用又是什么呢。
Java注解的定义
定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】 ③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
元数据的作用
如果要对于元数据的作用进行分类,还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类: 编写文档:通过代码里标识的元数据生成文档。 代码分析:通过代码里标识的元数据对代码进行分析。 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查
基本内置注解
@Override
它的作用是对覆盖超类中方法的方法进行标记,如果被标记的方法并没有实际覆盖超类中的方法,则编译器会发出错误警告。
Java代码
public class OverrideDemoTest {
public String
tostring() {
return "测试注解";
}
}
@Deprecated
它的作用是对不应该再使用的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,使用@Deprecated的示例代码示例如下:
Java代码
public class DeprecatedDemoTest {
public static void main(String
[]args
) {
DeprecatedClass
.DeprecatedMethod();
}
}
class DeprecatedClass {
@Deprecated
public static void DeprecatedMethod() {
}
}
@SuppressWarnings
其参数有:
deprecation,使用了过时的类或方法时的警告
unchecked,执行了未检查的转换时的警告
fallthrough,当 switch 程序块直接通往下一种情况而没有 break 时的警告
path,在类路径、源文件路径等中有不存在的路径时的警告
serial,当在可序列化的类上缺少serialVersionUID 定义时的警告
finally ,任何 finally 子句不能正常完成时的警告
all,关于以上所有情况的警告
Java代码
import java
.util
.ArrayList
;
import java
.util
.List
;
public class SuppressWarningsDemoTest {
public static List list
= new ArrayList();
@SuppressWarnings("unchecked")
public void add(String data
) {
list
.add(data
);
}
}
自定义注解
它类似于新创建一个接口文件,但为了区分,我们需要将它声明为@interface,如下例:
Java代码
public @
interface NewAnnotation {
}
使用自定义的注解类型
Java代码
public class AnnotationTest {
@NewAnnotation
public static void main(String
[]args
) {
}
}
为自定义注解添加变量
Java代码
public @
interface NewAnnotation {
String
value();
}
Java代码
public class AnnotationTest {
@NewAnnotation("mainmethod")
public static void main(String
[]args
) {
saying();
}
@NewAnnotation(value
="saymethod")
public static void saying() {
}
}
定义一个枚举类型,然后将参数设置为该枚举类型,并赋予默认值
public @
interface Greeting {
public enum FontColor
{
BLUE
,
RED
,
GREEN
};
String
name();
FontColor
fontColor() default FontColor
.RED
;
}
这里有两种选择,其实变数也就是在赋予默认值的参数上,我们可以选择使用该默认值,也可以重新设置一个值来替换默认值
Java代码
public class AnnotationTest {
@NewAnnotation("mainmethod")
public static void main(String
[]args
) {
saying();
sayHelloWithDefaultFontColor();
sayHelloWithRedFontColor();
}
@NewAnnotation("saymethod")
public static void saying() {
}
@Greeting(name
="defaultfontcolor")
public static void sayHelloWithDefaultFontColor() {
}
@Greeting(name
="notdefault", fontColor
=Greeting
.FontColor
.BLUE
)
public static void sayHelloWithRedFontColor() {
}
}