zoukankan      html  css  js  c++  java
  • 注解

    注解

    解释

    • 注解不同于注释,注释是给开发者看的,便于更加方便的理解程序,注解是给JVM识别的。
    • 所有的Java类都是Object的子类
    • 所有的Annotation都是java.lang.annotation.Annotation的子类
    • Annotation通常作用于pagkage、Class、Field、Method上面
      JDK 提供的几个特俗的Annotation,称为元Annotation,只能用在Annotation上面。

    常用注解

    • @ Target (jdk提供)
      表示定义的注解作用在哪里
      * ElementType.TYPE:class、interface、Enum 类、接口、枚举
      * ElementType.Field:Field 字段
      * ElementType.Method:Method 方法
    • Retention
      表示注解的保留策略
      * RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
      * RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
      * RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

    示例:
    Column

    //注解放到字段上面
    @Target(ElementType.TYPE)
    //运行时保留,可以通过反射获取
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Column {
    
      public   String name() default "jack";
    
        public  String value();
    
        public String address() default  "";
    
    }
    
    User.java
    @Column(name = "zhangsan" ,value = "12",address = "北京市")
    public class User {
    
        public static  void Say(String name,String value,String address)
        {
            System.out.println("name:"+name+" --value:"+value+"--address:"+address);
        }
    
    }
    
    

    main

    
    public static  void  main(String [] args)
        {
            User user=new User();
            Class<? extends User> aClass = user.getClass();
            Column annotation = aClass.getAnnotation(Column.class);
            if(annotation!=null) {
                try {
                    String address = annotation.address();
                    String name = annotation.name();
                    String value = annotation.value();
    
                    Method say = aClass.getMethod("Say", String.class, String.class, String.class);
                    say.invoke(user,name,value,address);
    
                } catch (Exception ex) {
    
                    ex.printStackTrace();
                }
    
            }
    
    
    
    
        }
    
    
  • 相关阅读:
    WIA Property Constant Definitions
    未能导入activex控件,请确保它正确注册"的完美解决方案
    ILSpy反编译工具的使用
    WIA
    在C#中使用WIA获取扫描仪数据
    在C#中使用WIA获取扫描仪数据(利用Filter处理图片)
    VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
    怎么添加项目到SVN上面
    数学家帮你找出最佳求职者 你只要先淘汰前37%的人
    程序员7大软技能测验 你得几分?
  • 原文地址:https://www.cnblogs.com/lilihai/p/10223628.html
Copyright © 2011-2022 走看看