java注解基本语法

注解的概念

        官方:java注解用于为java代码提供元数据,作为元数据,注解不直接影响你的代码执行

                但也有一些类型的注解实际上可以用于着一目的,java注解是从java5开始添加到java的

        我理解:我感觉注解就像是一个标记,表名了被标记的东西是一个意思

        注解可以标记任何地方,但是我们还是可以使用一些手段进行限制

        注解分为两大类:普通注解、元注解

        普通注解就是用来注解:方法、属性、类的

        元注解则是用来注解:普通注解

普通注解

        注解声明

                public @interface name{

                 }

        注解使用:(就是@注解类名),可以写到(方法、属性、类)

        @name

        public class a{ }

        注意:这个注解并没有多大的作用,顶多算是一个标记

                        如果要有作用的话,就需要使用元注解

        常用注解

                @Override

                        表示一个方法的声明是否重写了父类的方法,但是只能出现在方法之上

                @Deprecated

                        这个注解是用来表示过时的元素

                @SuppressWrnings

                        表示屏蔽jvm提示的异常信息

        注解属性

                注解的属性也叫做成员变量。注解只有成员变量,没有方法

                注解的成员变量在注解的定义中以“无参的方法”形式来申明,

        语法

                声明语法

                        类型 名字() [ default 值 ];

        注意:必须声明在注解类当中

                类型限制:8种基本数据类型、类、接口、注解、他们的数组

                多个之间使用分号隔开,

        声明数组的形式

                类型 []名字();

        注意在赋值的时候只能是数组,单个值不需要进行数组化

 使用语法

        @注解名(名字=值,……)

        被注解的(方法,类,属性)

        注意

                如果注解当中只有一个value属性时,可以直接在括号里面填写值,不需要指定名字

                在使用的时候,有属性的注解后面必须加上“()”括号,没有则不需要

                在使用的时候,必须全部进行赋值,除了赋了默认值的

        代码示例

                注解类

//元注解
@Retention(RetentionPolicy.CLASS )//注解生存的时长
@Documented
//没有属性的注解
public @interface Annotations {
	
}
//有属性的注解
@Target(ElementType.CONSTRUCTOR)//指定注解运用的地方
@interface Annotation2{
	String  name() default "1" ;//声明单个属性,赋默认值
	String []age();//声明数组的形式
}

        注解测试类

@Annotations//没有属性的注解类
public class AnnotationsTask {
	@Annotations//注解方法
	public void a () {
		
		@Annotations//注解局部变量
		String name="";
		
		if(true) {
			
		}
	}
	@Annotations//注解成员变量
	public String name;
	
	@Annotation2(name="",age = { "" })//赋值数组必须赋数组
	public AnnotationsTask() {
		
	}
}

元注解

        元注解就是可以使用到普通注解上面的注解

        元注解分为

                @Retention、@Documented、@Target、@Inherited、@Repeatable

        @Retention()括号取值

                RetentionPolicy枚举类型当中的其中一个

                SOURCE:注解只在源码阶段保留

                CLASS:注解只被保留在编译进行的时候

                RUNTIME:注解可以保留在程序运行的时候,可以通过程序来获取注解信息

        @Documented

                这个不需要值,它的作用是能够将注解信息包含到javadoc当中去

        @Target:表示注解能够注解的位置

                Target是目标的意思,@Target指定了注解运用的地方

                就是注解这个东西是可以写到任何地方的

                那么我们就可以使用@Target,这个注解来进行限制

                取值

                ElementType是一个枚举,以下的都是枚举值

                        ANNOTATION_TYPE:可以给一个注解进行注解

                        CONSTRUCTIOR:可以给构造方法进行注解

                        FIELD:可以给属性进行注解

                        LOCAL_VARIABLE:可以给局部变量进行注解

                        METHOD:可以给方法进行注解

                        PACKAGE:可以给一个包进行注解

                        PARAMETER:可以给一个方法内的参数进行注解

                        TYPE:可以给一个类型进行注解,例如:类、接口、枚举

        @Inherited:子类继承父类的注解

                inherited是继承的意思,而是说一个父类被@Inherited注解过的注解进行主机的话

                那么如果子类没有被任何注解应用的话,这个子类就继承了父类的注解

        @Repeatable:可重复

                Repeatable是可重复的意思,@Repeatable是java 1.8才加进来的

                它里面必须要有一个 value 的属性,属性类型是一个被 @Repeatable 注解过的注解数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值