注解
注解
三大内置注解:
@Override:重写的注解;
@Deprecated:不推荐程序员使用,但是可以使用,或有更好的方式;
@SuppressWarnings:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息;
示例代码如下:
package com.han.annotation;
import java.util.ArrayList;
import java.util.List;
/**
* 内置注解
*/
public class Test01 extends Object{
@Override //重写的注解
public String toString() {
return super.toString();
}
@Deprecated //不推荐程序员使用,但是可以使用,或有更好的方式
public static void test1(){
System.out.println("Deprecated");
}
@SuppressWarnings("all") //告诉编译器忽略指定的警告,不用在编译完成后出现警告信息
public static void test2(){
List list = new ArrayList<>();
}
public static void main(String[] args) {
test1();
}
}
元注解:
元注解的作用就是负责注解其他注解,Java定义了4个meta-annotation类型,他们被用来提供对其他annotation类型作说明,这些类型和他们所支持的类在java.lang.annotation包下可以找到
- @Target 用来描述注解的使用范围(被描述的注解可以在什么地方使用)
- @Retention 表是需要在什么级别保存该注释信息,用于表示注解的生命周期(SOURCE<CLASS<RUNTIME)
- @Documented 说明该注释将保存在javadoc中
- @Inherited 说明子类可以继承父类的该注解
package com.han.annotation;
import java.lang.annotation.*;
/**
* 元注解
* 元注解的作用就是负责注解其他注解,Java定义了4个meta-annotation类型,他们被用来提供对其他annotation类型作说明
* 这些类型和他们所支持的类在java.lang.annotation包下可以找到
* @Target 用来描述注解的使用范围(被描述的注解可以在什么地方使用)
* @Retention 表是需要在什么级别保存该注释信息,用于表示注解的生命周期(SOURCE<CLASS<RUNTIME)
* @Documented 说明该注释将保存在javadoc中
* @Inherited 说明子类可以继承父类的该注解
*/
@MyAnnotation
public class Test02 {
public void test(){
}
}
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
@interface MyAnnotation{
}
自定义注解:
package com.han.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定义注解
*/
public class Test03 {
//注解可以显示赋值,如果没有默认值,我们必须给它赋值
@MyAnnotation2(age = 18,name = "张三")
public void test(){
}
//如果只有一个value变量,那么使用该注解时,变量名可以不写,直接写上变量值就行
@MyAnnotation3("张三")
public void test3(){
}
}
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
//注解的参数 参数类型 参数名()
String name() default "";
int age();
int id() default -1;
String [] schools() default {"清华大学","北京大学"};
}
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation3{
String value();
}