JavaEE注解讲解(上)

    技术2022-07-11  147

    JavaEE注解讲解

    JavaEE里面不乏会出现很多很多的注解,这里到底是什么意思呢,他们的作用又是什么呢。

    Java注解的定义

    定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

    作用分类:

    ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】 ③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

    元数据的作用

    如果要对于元数据的作用进行分类,还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类: 编写文档:通过代码里标识的元数据生成文档。 代码分析:通过代码里标识的元数据对代码进行分析。 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查

    基本内置注解

    @Override 它的作用是对覆盖超类中方法的方法进行标记,如果被标记的方法并没有实际覆盖超类中的方法,则编译器会发出错误警告。 Java代码 /** * 测试Override注解 * @author Administrator */ public class OverrideDemoTest { //@Override public String tostring() { return "测试注解"; } } @Deprecated 它的作用是对不应该再使用的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,使用@Deprecated的示例代码示例如下: Java代码 /** * 测试Deprecated注解 * @author Administrator */ public class DeprecatedDemoTest { public static void main(String[]args) { // 使用DeprecatedClass里声明被过时的方法 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() { } // 此时的fontColor为默认的RED @Greeting(name="defaultfontcolor") public static void sayHelloWithDefaultFontColor() { } // 将fontColor改为BLUE @Greeting(name="notdefault", fontColor=Greeting.FontColor.BLUE) public static void sayHelloWithRedFontColor() { } }
    Processed: 0.010, SQL: 9