首页 > 其他 > 详细

2阶——注解

时间:2020-05-12 17:57:37      阅读:38      评论:0      收藏:0      [点我收藏+]

1:注解从jdk1.5之后支持

技术分享图片

 

 

 

2: jdk中预定义的一些注解

*@Override (检查被该注解标注的方法是否继承于父类)    @Deprecated(标注的内容表示已经过时)  @SuppressWarnings(压制警告))





3:自定义注解
本质相当于一个接口,接口能定义什么 注解就可以定义什么)

public @interface MyAnotation { //javac把源文件先编译成为class 文件 在通过javap命令反编译就会发现注解的 本质是 public interface Annotaticn extends Annotation{} 这就可以说接口中能定义什么 注解就可以定义什么
  属性的返回值类型 //javadoc可以编译成Document文档
   *基本数据类型
   *String
   *枚举 注解 以上数据的数组类型

例如:int show1();
}

 技术分享图片

技术分享图片

 

 

 




4:元注解
用于描述注解的注解
技术分享图片

 


 

//自定义注解
@Target(value = {ElementType.TYPE,ElementType.FIELD) //定义作用范围 Type是只能作用于类上  FIELD 成员变量上
@Retention(RetentionPolicy.RUNTIME)   // SOURCE CLASS RUNTIME
//@Documented
public @interface MyAnotation {  //本质是 public interface Annotaticn extends Annotation


}

 



 5注解替代配置文件(框架注解的简易实现原理)


package cn;

import java.lang.reflect.Method;

@Pro(className = "cn.refect.Person",methodName = "eat")  //注解替代了配置文件 相当于直接配置到了类上!
public class ReDemo {
    public static void main(String[] args) {
        //用注解代替配置文件

        try {
            Class<ReDemo> clazz = ReDemo.class;
            //获取一个注解对象
            Pro po = clazz.getAnnotation(Pro.class);
            String className = po.className();
            String methodName = po.methodName();

            System.out.println(className);
            System.out.println(methodName);

            //反射执行
            Object o = clazz.newInstance();
            Method method = clazz.getMethod(methodName);
            method.invoke(o);




        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}


//自定义的注解
package cn;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Pro {
    String className();
    String methodName();
}

 

 

 





















2阶——注解

原文:https://www.cnblogs.com/gaoSJ/p/12877521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!