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

JAVA 注解之自定义注解

程序员文章站 2022-06-16 17:26:43
...

1、注解:

Annotation不是注解,它是一种标记,JDK1.5的新特性,例如:静态导入,枚举,增强for循环,装箱,泛型
1)最早的注解是内置注解:
@Override 重写
@Deprecated作废
@SuppressWarnings消除警告
2)元注解(定义注解的作用,修饰注解的注解)
@Target//位置
@Retention//声明周期,保留阶段
@Documented//文档化
@Inherited//可继承
3)函数式接口注解:
@FunctionalInterface//为了写出lambda表达式

2、如何注解:

1)public @interface Test{

}
结构是一个特殊的接口
package 注解学习;
2)
@Value
public class Test {
public static void main(@Value String[] args) {
// TODO Auto-generated method stub

}

}

/* 自定义一个注解 */
@interface Value{

}
3)如何限制注解只能用在某个特定的位置?
用元注解Target修饰
Target用在注解的头顶上限制位置,它是一个元注解:
JAVA 注解之自定义注解

4、函数式接口叫做匿名函数:

JAVA中的匿名内部类就是其他语言的匿名函数
package 注解学习;

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

@Vaule
public class Test {
@Vaule(value=10,message=“张三”,msg= {“ni”})
public static void main( String[] args) {
// TODO Auto-generated method stub
Fly fly=new Fly() {

		@Override
		public void flying() {
			// TODO Auto-generated method stub
			System.out.println("fkjigj3rq");
		}
    	 
     };
      //Fly 是一个函数式接口,可以用JAVA8的Lambda改写
     Fly f1=()->{
    	 System.out.println("grerofwjepoeogfkjigj3rq");
     };
     f1.flying();
}

}
//也有注解@Vaule
class Son extends Test{
@Lanqiao(“涛哥”)
String name;
@Lanqiao(“塔里木”)
public void print() {

}

}
//自定义一个注解
@Inherited//继承性
@Documented//使用JAVAdoc命令把这个类做成文档的时候,就会对被修饰的注解起标记作用
@Retention(RetentionPolicy.RUNTIME)//生命周期
@Target({ElementType.METHOD,ElementType.TYPE})
@interface Vaule{
//如果注解中只有一个参数且是value 那么这个参数是可以省略掉的
double value() default 0;
String message() default"";
String[] msg() default{“wo”};
}

//自定义一个蓝桥注解
@Retention(RetentionPolicy.RUNTIME)//生命周期
@Target({ElementType.METHOD,ElementType.FIELD})
@interface Lanqiao{
String value();
}

//函数式接口(里面只能有一个抽象方法)
/*

  • @FunctionalInterface作用表示这是个函数式接口,
  • 告诉编译器,但是这个注解可以不写,只要这个接口符合函数式编程的特点
    */
    @FunctionalInterface
    interface Fly{
    public void flying();
    }

上一篇: php代码的编译与执行

下一篇: Flink