zoukankan      html  css  js  c++  java
  • 注解 annotation

    在编写注解的时候需要了解的四种注解:

    @Target

          表示该注解可以用于什么地方,可能的ElementType参数有: 

    CONSTRUCTOR:构造器的声明

    FIELD:域声明(包括enum实例)

    LOCAL_VARIABLE:局部变量声明

    METHOD:方法声明

    PACKAGE:包声明

    PARAMETER:参数声明

    TYPE:类、接口(包括注解类型)或enum声

    @Retention

         表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:

    SOURCE:注解将被编译器丢弃

    CLASS:注解在class文件中可用,但会被VM丢弃

    RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。

    @Document

        将注解包含在Javadoc中

    @Inherited

        允许子类继承父类中的注解

    定义一个注解:

    复制代码
    package com.rhythmk.annotation;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target(value = ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RService {
    
        String[] value() default "working";
    
        RunEnum Run();
    }
    复制代码

    注解使用:

    复制代码
    @RService(value={"v1","v2"},Run=RunEnum.Run)
    public interface UserService {
      
         String  findUserById(int id);
         
         String saveUser(String userName);
    }
    复制代码

    通过isAnnotationPresent 判断该类是否存在某注解:

            Class<?> usCls = UserService.class;
            // 判断改类是否使用了该注解
            boolean isAnnotationRService = usCls
                    .isAnnotationPresent(RService.class);

    获取该类注解配置的数值:

        RService rService = UserService.class.getAnnotation(RService.class);
            for (String v : rService.value()) {
                System.out.println("注解Value:" + v);
            }
    
            System.out.println("枚举:" + rService.Run());
  • 相关阅读:
    AC自动机 [模板]
    ChonSu [ZOJ 2684]
    Quad Tiling [POJ 3420]
    LCA 最近公共祖先 [POJ 1330]
    强连通分量[trajan]
    高斯消元 [模板]
    01K Code [HDU 1545]
    Cycle Game [ZOJ 2686]
    清除Eclipse中的内置浏览器中的历史记录(REF)
    第三方的 NET 数据库连接提供者,Lightswitch
  • 原文地址:https://www.cnblogs.com/hoobey/p/5402514.html
Copyright © 2011-2022 走看看