欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 注解 Annotation、元注解

程序员文章站 2024-01-18 22:10:22
...

作用 :

注解可以对类中的结构(属性,方法,构造器等)进行补充说明,同时不改变原有的结构

常用的三个解注:

  • @Override: 限定重写父类方法, 该注解只能用于方法
  • @Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择
  • @SuppressWarnings: 抑制编译器警告

自定义注解

格式 :

@interface 注解名{

}

示例:

public @interface MyAnnotation {

}

元注解:

注解的注解(作用在注解上面的注解)

  • @Retention : 用来说明该注解所作用在的注解的生命周期。

    • SOURCE: 被编译所抛弃,不使用了。
    • CLASS: 编译期间 - 运行期间 (在运行期间该注解就已经死亡了)
    • RUNTIME: 运行期间 -(在整个运行期间该注解都是存活的)
  • @Target :用来说明该注解所作用在的注解,可以使用在的结构有哪些
    —下面的知道即可—

  • @Documented : 用来说明该注解所作用在的注解,是否可以被javadoc所解析

  • @Inherited : 用来说明该注解所作用在的注解,是否可以被子类所继承

通过反射获取注解上的信息

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface MyAnn3{
	
}


//注解
@interface MyAnn{
	
}

@interface MyAnn2{
	//default后面跟默认值。
	String name() default "aaa";//可以理解成属性
}

@MyAnn2(name = "小龙哥")
@MyAnn
public class AnnotationTest {

	@MyAnn2
	@MyAnn
	@Deprecated
	private String name;
	
	private int age;
	
	@MyAnn
	@Deprecated
	public void info(){
		
	}
	
	@MyAnn3
	public void show(){
		
	}
	
	@MyAnn
	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		return super.equals(obj);
	}
	
	public static void main(String[] args) {
		
//		new AnnotationTest().info();
		
		@SuppressWarnings("unused")
		int age = 10;
		
		System.out.println("ccc");
		
	}
}