JavaEE-Java开发框架的基础-注解机制

JavaEE-Java开发框架的基础-注解机制

概述

Annotation(注解)工作方式:

从java1.5以后,jdk提供了注解开发,开发者可以自定义注解。Annotation并不影响代码的语义,但是它的工作方式常被用来开发程序工具或者类库,它反过来对正在运行的程序语义有所影响

举例: @override

override属于标识性注解

常见标识性注解

@Deprecated:过期的方法,不建议使用的

@SuppressWarning:消除警告(开发工具标志了黄线则为警告)

自定义注解

public @interface MyAnn {
	//定义注解的属性,必须要加上()
	String value();
}
@MyAnn(value = "hello")
public class AnnTest {

@interface代表注解

注解中可以设置值,在程序运行时配合使用

所有带@的接口都继承自

@Retention

@Retention是作用在注解上的注解,指明被注解的注解有效期

有三个RetentionPolicy类型的值可以设置

ClASS:注解指定的值至保留在类文件

RUNTIME:有效期包含通过反射被调用时

SOURCE:只保留在源代码

如:

@Retention(RetentionPolicy.RUNTIME )
public @interface testAnno {

}

@Target

主要标注在注解上,表示被标注的注解可以标注在哪些域上

@Retention(RetentionPolicy.RUNTIME)
@Target(value={ElementType.METHOD})
public @interface Anndemo {
	//定义注解属性
	String [] value();
 
}

以上表示只标注在方法上

@Target支持添加的类型

注解的值类型(是个枚举类型)

枚举中有以下项

AnnotatedElement接口

所有的域(类,方法,属性,包等)都实现了这个接口

接口中定义了获得注解的方法

注解应用实例

自定义注解:

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

@Retention(RetentionPolicy.RUNTIME )
public @interface testAnno {
 String value();
}

自定义注解所添加的方法:

public class Caculate {
@testAnno(value = "相加的结果为")
public  int add(int a, int b ){
    return a+b ;
}
}

反射调用方法,获得注解值,进而影响程序:

import java.lang.reflect.Method;

public class testReflect {

    public static void main(String[] args) throws Exception {
        //创建Caculate类对象
        Class<?> clazz =  Caculate.class ;
        //通过类对象获得实例
        Object obj  = clazz.newInstance();
        //获得方法
        Method method = clazz.getDeclaredMethod("add", int.class, int.class);
        //判断是否存在注解
        boolean isA = method.isAnnotationPresent(testAnno.class) ;
        if(isA){
            //获得注解
            testAnno an = method.getAnnotation(testAnno.class) ;
            //获得注解的值
            String val =  an.value();
            //反射调用add方法
            Object result = method.invoke(obj,new Object[]{1,2}) ;
            //结合注解的值
            System.out.println(val+result);
        }
        
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值