概念与测试
package com.day10.test;
import org.junit.Test;
import java.lang.annotation.Annotation;
/**
* Author: Json
* Date: 2021/9/9
**/
public class TestJson {
public static void main(String[] args) {
System.out.println("新的开始");
//注解
//Annotation 用来修饰包 修饰类 构造器 方法 成员变量 参数 局部变量的声明
// 这些信息被保存在Annotation的name='value'对中
//在未来的开发模式 都是基于注解的
// 框架 = 注解 + 反射 + 设计模式
//注解的说明
// @author 表明开发的作者
// @version 表明该类模块的版本
// @see 参数转向 也就是相关主题
// @since 从哪个版本开始增加的
// @param 对方法种的参数说明
// @return 对方法的返回值的说明
// @exception 异常的说明
//编译时进行格式检查
// @Override 重写父类方法 该注解用于方法
// @Deprecated 用于表示所修饰的元素(类 方法等)已过时
// @SuppressWarnings 抑制编译警告
// 如何自定义注解
//参照 @SuppressWarnings 就可以
// 注解声明为 @interface
// 内部定义成员 通常使用value 表示
// 默认值 default 定义
// 如果 自定义注解没有成员 表明是一个标识作用 比如 @Override
//如果注解有成员 使用时 必须指定成员的值
//一般自定义注解通常会指明两个元注解 : @Target() @Retention()
// 注解的意义 配合反射的作用 可以做一些自己想做的事
// 后续 学习 有讲到
//jdk提供的 4种元注解
// 元注解 对现有的注解进行解释说明的注解
// @Retention() 声明注解的生命周期 : SOURCE\ CLASS (默认行为)\RUNTIME (只有声明为RUNTIME的注解,才能通过反射获取)
// @Target() 用于指定被修饰的注解 能用于修饰那些程序元素 比如 (类,方法 接口)
//@Target(ElementType.TYPE)——接口、类、枚举、注解
//@Target(ElementType.FIELD)——字段、枚举的常量
//@Target(ElementType.METHOD)——方法
//@Target(ElementType.PARAMETER)——方法参数
//@Target(ElementType.CONSTRUCTOR) ——构造函数
//@Target(ElementType.LOCAL_VARIABLE)——局部变量
//@Target(ElementType.ANNOTATION_TYPE)——注解
//@Target(ElementType.PACKAGE)——包
//一般自定义注解通常会指明两个元注解 : @Target() @Retention()
// @Documented() 表示所修饰的注解 被javadoc 解析时 保留下来 提取成文档
// @Inherited() 被他所修饰的注解 具有继承性
//通过反射 获取注解信息 --- 到反射的内容 再具体的学习
}
@Test
public void testGetMyAnn(){
//反射
Class<Student> studentClass = Student.class;
Annotation[] annotations = studentClass.getAnnotations();
for (int i=0;i<annotations.length;i++){
System.out.println(annotations[i]);
}
}
}
自定义注解
package com.day10.test;
import java.lang.annotation.*;
/**
* Author: Json
* Date: 2021/9/14
* 声明注解
**/
//声明注解生命周期 : SOURCE\ CLASS (默认行为)\RUNTIME (只有声明为RUNTIME的注解,才能通过反射获取)
@Retention(RetentionPolicy.RUNTIME)
//@Target(ElementType.TYPE)——接口、类、枚举、注解
//@Target(ElementType.FIELD)——字段、枚举的常量
//@Target(ElementType.METHOD)——方法
//@Target(ElementType.PARAMETER)——方法参数
//@Target(ElementType.CONSTRUCTOR) ——构造函数
//@Target(ElementType.LOCAL_VARIABLE)——局部变量
//@Target(ElementType.ANNOTATION_TYPE)——注解
//@Target(ElementType.PACKAGE)——包
@Target({ElementType.TYPE}) //指定myAnn 这个注解 可以使用在哪些程序上
@Inherited
public @interface myAnn {
// 成员变量在 注解 定义中以无参数方法的形式来声明
// 其方法名和返回值定义了该成员的名字和类型 我们称配置参数
// 类型只能为八种基础数据类型 String Class enum Annotation 等
// 可以声明初始值 使用 default 关键字
//如果只有一个参数成员 建议使用 参数名value
//一般自定义注解通常会指明两个元注解 : @Target() @Retention()
String value() default "word";
}
//注解的使用
package com.day10.test;
/**
* Author: Json
* Date: 2021/9/10
**/
//自定义注解
@myAnn(value = "hello")
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
= name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void walk() {
System.out.println("人走路");
}
public void eat() {
System.out.println("人吃饭");
}
}
interface Info {
void show();
}
class Student extends Person implements Info {
@Override //重写注解
public void walk() {
//super.walk();
System.out.println("学生走路");
}
@Override //重写注解 接口里的方法
public void show() {
}
}java 注解基础详解
原创
©著作权归作者所有:来自51CTO博客作者json____的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:java8 环境安装
下一篇:java 集合的创建和使用
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java基础-注解、元注解
注解Java注解也称Java标注,是jdk1.5(5.0)后的新特征。Java语言中的类、方法、
java eclipse ide 自定义注解 -
java基础 – 注解
java注解核心处理就是利用反射获取注解,注解内容本身较少,想使用好注解更多的在于
java List System
















