内置注解:
@Override:重写,用于检查代码格式
@Deprecated:废弃。调用时可以显示注释(建议其他方法)
@FunctionalInterface:函数式接口
@SuppressWarnings:忽略警告信息
元注解:作用在其他注解的注解
@Retention(RetentionPolicy.RUNTIME): 标示注解的持久策略,1、只在代码中,2、编入class,3、RUNTIME ——时间
@Documented:标示注解是否包含在用户文档中
@Target(ElementType.TYPE):
标注注解应用在哪些Java成员中。通过ElementType 枚举类 ——地点
@Inherited:标记这个注解是自动继承的
自定义注解:(注解接口)
每 1 个 Annotation 对象,都会有唯一的 RetentionPolicy 属性;至于 ElementType 属性,则有 1~n 个。

定义格式:@Interface 注解名{ }
1. 定义的注解,自动继承了java.lang,annotation.Annotation接口
2. 注解中的每一个(抽象)方法,实际是声明的注解配置参数
方法的名称就是 配置参数的名称
方法的返回值类型,就是配置参数的类型。只能是:基本类型/Class/String/enum
3. 可以通过default来声明参数的默认值
4. 如果只有一个参数成员,一般参数名为value
5. 注解元素必须要有值,我们定义注解元素时,经常使用空字符串、0作为默认值。

反射:动态编程,获取类对象,创建对象,得到方法属性,执行方法属性

Demo1.class.getClassLoader()获取类加载器.getResoutceAsStream("config.txt"); //获取配置文件的输入流
有resource root文件夹加载resource文件夹下的配置文件,没有则加载src下的配置文件
得到Class:

获取构造方法Constructor:

用Constructor创建对象:

获取方法Method:

通过newInstance创立的对象执行方法:

获取属性Field:



通过反射获取注解信息:
获取类/属性/方法的所有注解对象:
Annotation[] annotations01 = Class/Field/Method.getAnnotations();
for (Annotation annotation : annotations01) {
System.out.println(annotation);
}
根据类型获取类/属性/方法的注解对象:
注解类型 对象名 = (注解类型) c.getAnnotation(注解类型.class); //注解类型就是注解类名
![]()
内省Introspector:针对JavaBean获取get和set方法的API(反射)
Introspector 类 获取Bean类信息的方法:
static BeanInfo getBeanInfo(Class cls)
通过传入的类信息, ——得到这个Bean类的封装对象 BeanInfo
BeanInfo类的方法:
PropertyDescriptor[] getPropertyDescriptors():
——获取bean类的 get/set方法 数组 PropertyDescriptor[ ]
PropertyDescriptor类的方法:
1. Method getReadMethod();
——获取PropertyDescriptor的一个get方法
2. Method getWriteMethod();
——获取PropertyDescriptor的一个set方法
3. String getName();
——获取PropertyDescriptor的name
4.Type getPropertyType();
——获取PropertyDescriptor的数据类型
有可能返回null 注意 ,加判断 !
本文探讨Java中的内置注解如@Override、@Deprecated等,以及自定义注解的创建、应用和反射实践,包括元注解和反射获取注解信息,涉及元数据管理与动态编程技巧。
705

被折叠的 条评论
为什么被折叠?



