`
mifantuanzi27
  • 浏览: 3318 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java注解总结

阅读更多

 

一、理解注解

Annotation( 注解 ) JDK5.0 及以后版本引入的一个特性 注解是(@interface Java 的一个新的类型(与接口很相似 ,它与类(Class)、接口(interface)、枚举(enum)是在同一个层次。我们可以定义注解、声明注解、获得注解,并且根据获得的注解做相应的处理,许多框架都大量应用了注解,以后继续学习。

 

二、对于java.lang.Annotation的理解

 

所有定义的注解类型到会继承该Annotation接口,定义注解需要使用@interface

 

以下为定义了一个注解AnnotationTest

 

package com.hdjava.annotation;

 

public @interface AnnotationTest {

    String  param = hello

    String[] value () ;

}

 

}

a. 注解可以定义final 静态属性,即使不写明关键字系统也会默认为final静态属性。当注解中的属性名为value时,在对其赋值时可以不指定属性的名称而直接写上属性即可;除了value意外的其他值都需要使用name=value这种复制方式,即明确指定给谁赋值 例如:@AnnotationTest(value=”hello”)或者@AnnotationTest(”hello”)

b. 注解可以定义公共抽象的方法

1. 方法前默认会加上 public abstract

2. 在声明方法时可以定义方法的默认返回值。

例如 : String value() default “hello” ;

3.方法返回值可以是 8 种基本类型, String Class 、枚举、注解及这些类型的数组。

c.注解定义说明

1.当我们使用@interface关键字定义一个注解时,该注解隐含地继承了

java.lang.annotation.Annotation接口;

2.如果我们定义了一个接口,并且让该接口继承自Annotation,那么我们所定义的依然是接口而不是注解;

3.Annotation本身是接口而不是注解。可以与Enum类比。

 

三、三个Java基本注解

 

3.1@Override

该注解用在方法前面,用来标识该方法是重写父类的某个方法。

 

package com.hdjava.annotation;

public class OverrideTest {

   

    @Override

    public String toString() {

       return "this is OverrideTest toString";

    }

}

 

3.2@Deprecated

该注解的作用是标记某个过时的类或方法。

 

 

package com.hdjava.annotation;

public class DeprecatedTest {

 

       @Deprecated

    public static void doSomething(){

       System.out.println("do nothing");

    }

 

       public static void main(String[] args) {

       doSomething();

    }

}

 

3.3@SuppressWarnings

该注解的作用是阻止编译器发出某些警告信息。

 

它可以有以下参数 :

deprecation :过时的类或方法警告。例如:new Date().toLocal

unchecked :执行了未检查的转换时警告。例如 List list = new ArrayList

fallthrough :当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。

path :在类路径、源文件路径等中有不存在的路径时的警告。

serial :当在可序列化的类上缺少 serialVersionUID 定义时的警告。

finally :任何 finally 子句不能完成时的警告。

all :关于以上所有情况的警告。

 

四、元注解

元注解就是用来对注解类进行注解的注解。

4.1 @Retention

它是被定义在一个注解类的前面,用来说明该注解的生命周期。

它有以下参数:

RetentionPolicy.SOURCE :指定注解只保留在一个源文件当中。

RetentionPolicy.CLASS :指定注解只保留在一个 class 文件中。

RetentionPolicy.RUNTIME :指定注解可以保留在程序运行期间。

 

4.2 RetentionPolicy

 

枚举类型:定义了Retention的类型

public enum RetentionPolicy {

    SOURCE,

    CLASS,

    RUNTIME

}

 

4.3 @Target

它是被定义在一个注解类的前面,用来说明该注解可以被声明在哪些元素前。

它有以下参数:

ElementType.TYPE :说明该注解只能被声明在一个类前。

ElementType.FIELD :说明该注解只能被声明在一个类的字段前。

ElementType.METHOD :说明该注解只能被声明在一个类的方法前。

ElementType.PARAMETER :说明该注解只能被声明在一个方法参数前。

ElementType.CONSTRUCTOR :说明该注解只能声明在一个类的构造方法前

ElementType.LOCAL_VARIABLE :说明该注解只能声明在一个局部变量前。

ElementType.ANNOTATION_TYPE :说明该注解只能声明在一个注解类型前

ElementType.PACKAGE :说明该注解只能声明在一个包名前。

如果不加该注解表示可以声明在任何位置

 

4.4 ElementType

 

枚举类型:定义了Target的类型

 public enum ElementType {

    TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR,

    LOCAL_VARIABLE, ANNOTATION_TYPE,PACKAGE

   }

 

4.5 @Documented

如果类型声明是用 Documented 来注释的,则其注释将成为注释元素的公共 API 的一部分。

 

4.6 @Inherited

指示注释类型将被子类自动继承。

 

五、获取注解应用举例

 

新建注解TargetAnnotation 生命周期为RetentionPolicy.SOURCE

 

@Retention(RetentionPolicy.SOURCE)

@Target(ElementType.METHOD)

public @interface TargetAnnotation {

    String str = "hello";

    public abstract String value( );

}

 

 

新建注解RetentionAnnotation生命周期为RetentionPolicy.SOURCE

 

@Retention(RetentionPolicy.RUNTIME)

public @interface RetentionAnnotation {

   

    String name() default "jason";

   

    String desp();

}

使用注解的类AnnotationTest

public class AnnotationTest {

   

    @TargetAnnotation("world")

    @RetentionAnnotation(desp = "jinan")

    @Deprecated

    @SuppressWarnings("unchecked")

    public void output(){

       System.out.println("this is method output");

    }

}

 

获取注解测试类

public class MyReflection {

 

       @SuppressWarnings("unchecked")

    public static void main(String[] args) throws Exception{

 

       AnnotationTest test = new AnnotationTest();

 

       Class cls = test.getClass();

       Method method = cls.getMethod("output", new Class[]{});

 

       RetentionAnnotation annotation = method.getAnnotation(RetentionAnnotation.class);

 

       Annotation[]annotations = method.getAnnotations();

 

    System.out.println(annotation.annotationType().getName());

       System.out.println(annotation.name());

       System.out.println(annotation.desp());

      

      

       for(@SuppressWarnings("unused")

       Annotation a :annotations){

           System.out.println(a.annotationType().getName());

          

       }

   

    }

}

运行结果:

jason

jinan

com.hdjava.annotation.RetentionAnnotation

java.lang.Deprecated

 

 

分享到:
评论

相关推荐

    android学习日记-4 JAVA注解总结

    本篇“Android学习日记-4 JAVA注解总结”将深入探讨Java注解及其在Android中的应用。 一、Java注解概述 Java注解是一种类型安全的元数据机制,自Java 5引入以来,已经在各种框架和库中广泛应用。注解通过@符号开头...

    java spring 框架及注解 总结

    总之,Java Spring框架和其注解机制极大地提高了开发效率,减少了代码量,并且提供了许多高级特性来应对复杂的业务需求。通过熟练掌握Spring框架,开发者能够构建出更加稳定、可维护的企业级应用。

    Eclipse Java注释模板.txt

    ### Eclipse Java注释模板知识点详解 #### 一、概述 在进行Java开发的过程中,良好的代码注释习惯不仅能帮助自己快速回顾代码逻辑,还能方便其他开发者理解代码意图,从而提高整个团队的工作效率。Eclipse作为一款...

    java基础总结资料

    "java基础总结资料"涵盖了Java语言的核心概念,是学习和复习Java基础知识的重要资源。以下是一些主要的知识点: 1. **Java语法基础**:包括变量声明、数据类型(基本类型和引用类型)、运算符、流程控制(如if语句...

    java 注释模板 超级好用

    超级好用的 java 注释模板,吐血总结,整理。吐血总结,整理。

    Java自定义注解实例

    ### 一、Java注解概述 1. **定义**: 注解是一种声明式的编程元素,以`@`符号开头,后面跟着注解的名称。它们可以应用于类、接口、方法、变量等不同级别。 2. **预定义注解**: Java标准库提供了若干预定义注解,如`...

    Java的注释

    ### Java的注释 在Java开发中,良好的注释习惯对于提高代码的可读性和可维护性至关重要。本文将详细介绍几种常见的Java注释方式及其用途,并通过实例展示如何设置Eclipse IDE中的注释模板,帮助开发者更好地管理和...

    Java代码注释率检查器.rar

    总结来说,"Java代码注释率检查器"是一个实用的工具,可以帮助Java开发者监控和提升代码的注释质量。通过分析代码中的注释数量,它可以帮助我们遵循最佳实践,使代码更易于理解和维护,从而提升整个项目的质量和效率...

    Java自定义注解使用反射获取字段注解

    总结一下,Java的自定义注解结合反射机制,为我们提供了强大的元数据功能,可以用来增强代码的可读性、可维护性,甚至实现一些动态的功能。在实际开发中,自定义注解常用于框架的实现、AOP切面编程、配置管理等领域...

    java注解使用例子

    总结,Java注解是现代Java编程中的重要组成部分,它们提高了代码的可读性,简化了元数据的处理。无论是使用预定义的注解还是自定义注解,都需要理解其工作原理和使用方式,以便更好地利用这一强大的工具。通过学习和...

    Excel导入导出,Java注解的方式实现

    总结,Java注解在Excel导入导出中的应用极大地提高了代码的可读性和维护性,减少了硬编码,使得数据的映射变得更加直观。通过结合Apache POI库,我们可以高效地处理Excel文件,满足各种业务需求。在实际开发中,还...

    java知识体系总结

    Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...

    java-注解总结【从入门到项目总结】

    关于java注解的总结: 从入门介绍到项目使用的实际经验归纳总结得出! 从jdk5到jdk8!

    spring4基于java注解事例

    总结起来,这个示例将演示如何利用Spring 4的Java注解配置,结合Redis缓存,构建一个现代化的、可扩展的应用程序。通过这种方式,你可以学习到如何有效地管理和组织代码,以及如何利用Spring提供的工具和服务来提升...

    java注释规范文档

    ### Java注释规范详解 #### 一、引言 在软件开发过程中,代码注释扮演着极其重要的角色。良好的注释不仅可以帮助其他开发者快速理解代码的功能和用途,还能提高整个团队的工作效率。Java作为一种广泛使用的编程...

    java视频学习总结

    ### Java视频学习总结知识点 #### 抽象方法与抽象类 在Java中,抽象方法是一种没有具体实现(方法体)的方法,它仅提供方法签名,而具体的实现留给子类完成。一个类如果包含一个或多个抽象方法,那么这个类必须被...

    java 基础知识总结(经典)

    这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...

    java注释模板.zip

    总结,Java注释模板是提高代码质量和团队协作效率的重要工具。通过合理使用和定制注释模板,可以有效地提升代码的可读性,同时降低维护成本。无论是在个人项目还是团队开发中,都应该养成良好的注释习惯。

Global site tag (gtag.js) - Google Analytics