有关反射机制



  1. 类的动态加载安静
  2. package cn.sxt.demo;
  3. public class Test2{
    // 在编译期间 无论苹果或者橘子是否存在 只要语法格式正确编译器都允许通过 ,只有在程序执行阶段 才会检 //查是否存在该类,如果不存在 ,在报未找到异常
  4. public static void main(String[] args) throws ClassNotFoundException{
  5. if("apple".equals(args[0])){
  6. Class<?> c = Class.forName("cn.sxt.demo.Apple");//全路径名;包名+类名
  7. System.out.println("创建了苹果类");
  8. }else if("orange".equals(args[1])){
  9. Class<?> c = Class.forName("cn.sxt.demo.Orange");
  10. System.out.println("创建了橘子类");
  11. }
  12. }
  13. }
  1. 类的静态加载
  2. 在代码执行期间 无论橘子和苹果是否用的到 编译要求苹果和橘子都必须存在
  3. public class test1{
  4. public static void main(args[0])
  5. {
  6. if("apple".equals(args[0])){
  7. Apple apple = new Apple();
  8. System.out.println("创建了苹果类");
  9. }
  10. if("orange".equals(args[0])){
  11. Orange orange = new Orange();
  12. System.out.println("创建了橘子类");
  13. }
  14. }
  15. }
反射用途 : 可是使用 assembly 定义加载程序集 
   使用module获取在模块上定义的所有全局方法
   使用constructiorInfo 了解如下的类似信息 构造方法的名称 参数 访问修饰符 和实现详细信息
   使用type 的GetConstrutors  Getconstrutor方法来调用特定的构造函数
   
   使用MethodInfo 了解如下的类似信息 构造方法的名称 参数 访问修饰符 和实现详细信息
   使用type 的GetMethod  GetMethods方法来调用特定的构造函数
   此外还有 FieldInfo EventInfo PropertyInfo 以及ParameterInfo
优点:
提高了程序的灵活性和扩展性
降低耦合性 提高自适应能力
它允许程序创建和控制任何类的对象 无需提前硬编码目标类
缺点:
性能问题 主要应用在灵活性和拓展性要求很高的系统框架 普通程序不建议使用
便利的同时会带来维护难度的相应提高  反射代码比相应的直接代码更为复杂!
主要使用:
所使用的类java.lang.Class 
java.lang.reflect.Construtor; Field;Method;Modifier
   











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值