简单的注解

初学注解

什么是注解

**Java 注解(Annotation)**用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。
常见的注解:@Override 重写,@SuppressWarnings 镇压警告,@Target 表示我们的注解可以在那些地方,value值指定范围

元注解

元注解作用:元注解的作用就是负责注解其他注解, 还可以用来规范代码等,也更便于阅读。

下面来看看注解的类型

◆其实注解类型都可以在它们所支持的类在java.lang annotation包中可以找到.( @Target , @Retention,@Documented , @Inherited )
➢@Target: 用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
➢@Retention :表示需要在什么级别保存该注释信息,用于描述注解的生命周期(SOURCE< CLASS < RUNTIME)
➢@Document:说明该注解将被包含在javadoc中
➢@Inherited: 说明子类可以继承父类中的该注解

注解怎么用?

第一步:先定义一个自定义注解

@interface MyAnno{
	
}

第二步:再写一个类用来测试注解

/**注解
 * @author Asus
 *#元注解#
 */
//测试元注解
@MyAnno
public class Personal_01 {
	@MyAnno
//	@Override
	public void hehe() {
		/**
		 * @SuppressWarnings 镇压警告
		 */
		@SuppressWarnings("unused")
		String d;
	}
	@MyAnno
	public void th() {
		
	}
}

第三步:现在就可以写你想测试的注解啦

/**
 *自定义注解
 *@Target 表示我们的注解可以在那些地方,value值指定范围
 *ElementType.METHOD:只能对方法进行注解,只在方法上有效  TYPE是可以对类进行注解
 */
@Target(value = {ElementType.METHOD,ElementType.TYPE})
/**
 * @Retention表示我们的注解在什么地方还有效
 * runtime>class>sources
 */
@Retention(value = RetentionPolicy.RUNTIME)
/**
 * @Documented 表示是否将我们的注解生成在JAVAdoc中
 */
@Documented

/**
 * @Inherited 子类可以继承父类的注解
 */
@Inherited
@interface MyAnno{
	
}

@Target 表示我们的注解可以在那些地方,value值指定范围

下面是源码:(进入方法:ctrl+鼠标左键)

@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    /**
     * Returns an array of the kinds of elements an annotation type
     * can be applied to.
     * @return an array of the kinds of elements an annotation type
     * can be applied to
     */
    ElementType[] value();
}

其中ElementType[] value();的值可以规定你可以在哪里进行注解;
ElementType[]源码:

public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    TYPE,

    /** Field declaration (includes enum constants) */
    FIELD,

    /** Method declaration */
    METHOD,

    /** Formal parameter declaration */
    PARAMETER,

    /** Constructor declaration */
    CONSTRUCTOR,

    /** Local variable declaration */
    LOCAL_VARIABLE,

    /** Annotation type declaration */
    ANNOTATION_TYPE,

    /** Package declaration */
    PACKAGE,

    /**
     * Type parameter declaration
     *
     * @since 1.8
     */
    TYPE_PARAMETER,

    /**
     * Use of a type
     *
     * @since 1.8
     */
    TYPE_USE
}

上面翻译大概是:
ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
ElementType.CONSTRUCTOR 可以给构造方法进行注解
ElementType.FIELD 可以给属性进行注解
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
ElementType.METHOD 可以给方法进行注解
ElementType.PACKAGE 可以给一个包进行注解
ElementType.PARAMETER 可以给一个方法内的参数进行注解
ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

例:

@Target(value = {ElementType.METHOD,ElementType.TYPE})

比如这个value的值就只能在类、接口等和方法上使用

总结

学好注解是作为一个优秀程序员的必备技能,我认为在学到一定程度后就可以依靠注解来理解Java源代码,这样在了解底层时会有很多帮助,所以大家多多加油
最后:由于我是初学,很多时候都是借鉴别人的理解,所以Java之路长之又长,继续努力

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值