学习笔记:注解、反射、内省

内置注解:

@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 注意 ,加判断 !
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值