Java的注解和元注解

Java的注解和元注解

注解

定义:

可以对java中的某一段程序进行说明和标注,并且这个注解的信息可以被其他程序使用特定的方式读取到,从而完成相应的操作。

格式:

  • 没有属性的注解:
public @interface 注解名称{
    
}
  • 有属性,但没默认值的注解
public @interface 注解名称{
	public 类型 属性名();
}
  • 有属性有默认值的注解
public @interface 注解名称{
	属性类型 属性名称() default 默认值;
}

类型默认为public 可以省略不写

范围:

  • TYPE 使用在类、接口、注解、枚举等类型上
@Test
public class A{

}
  • 使用在属性上面
//   FIELD  全局变量使用注解
public class A{
	@Test
	private String a;
}
// LOCAL_VARIABLE 局部变量使用注解
public class A{
    public void say(){
        @Test
        int num = -2;ss
    }
}
  • 方法上面
// METHOD  在方法上面
public class A{
	@Test
	public void say(){
	
	}
}

// CONSTRUCTOR 在构造方法上面
public class A{
    @Test 
    public A(){
        
    }
}


//  PARAMETER 方法参数上面使用
public class A{
    public void say(@Test String name){
        
    }
}

  • ANNOTATION_TYPE 在注解类型上面
@Test
public @interface A{

}
  • PACKAGE 使用在包上面
@Test
package com.learnjava.demo;

保持

  • SOURCE:注解只保留在源文件,当java文件编译成class文件的时候,注解被遗弃
  • CLASS:注解被保留到Class文件,但jvm加载class文件时候被遗弃
  • RUNTIME:注解不仅保留到class文件中,jvm加载class文件之后,仍然存在。

元注解

自定义注解时候,一般会使用到元注解。

  • @Target,用于描述注解的使用范围,例如用在类上面还是方法上面
  • @Retention,用于描述注解的保存策略,是保留到源代码中、Class文件中、还是加载到内存中
  • @Documented,用于描述该注解将会被javadoc生产到API文档中
  • @Inherited,用于表示某个被标注的类型是被继承的,如果一个使用了@Inherited修饰的annotation 类型被用于一个class,则这个annotation将被用于该class的子类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值