反射&注解

 

一.反射的好处:

  • 1. 可以在程序运行过程中,操作这些对象。
  • 2. 可以解耦,提高程序的可扩展性。

二.反射获取Class对象的三种方式

  •  1.Class.forName("全类名")
  •  2.类名.class
  •  3.对象.getClass()

三. 反射的方法创建对象和获取与执行方法

 1.无参构造
 Class class=Class.forName("全类名");
 Object object=class.newInstance();
 2.有参构造
 Class class=Class.forName("全类名");
 Constructor constructor= class.getConstructor(Class...构造方法的参数类型);
 Object object = constructor.newInstance();
 
 3.获取方法
 
 Method method=class.getMethod(String "方法名",Class...方法的参数类型);
 
 4.执行方法
 
 method.invoke(类对象,...方法的实际参数);  //返回的参数类型与方法一致

1.定义注解格式

public @interface 注解名称{
    属性列表;
}

2.属性列表格式

  •         格式1:数据类型 属性名();
  •         格式2:数据类型 属性名() default 默认值;

3.元注解(限制注解的使用位置)

 @Target
  作用:指明此注解用在哪个位置,如果不写默认是任何地方都可以使用


   可选的参数值在枚举类 ElemenetType**中包括:
  TYPE: 用在类,接口上
 FIELD:用在成员变量上
 METHOD: 用在方法上
 PARAMETER:用在参数上
 CONSTRUCTOR:用在构造方法上
 LOCAL_VARIABLE:用在局部变量上
 
@Retention

作用:定义该注解的生命周期(有效范围)
  可选的参数值在枚举类型RetentionPolicy中包括
 SOURCE:注解只存在于Java源代码中;
CLASS:注解存在于Java源代码、编译以后的字节码文件中;
RUNTIME:注解存在于Java源代码中、编译以后的字节码文件中、运行时内存中;

4.注解中常用的方法

boolean isAnnotationPresent(注解的类名.class)  判断是否有注解
        
  getAnnotation(注解.class)  获取注解对象

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值