zoukankan      html  css  js  c++  java
  • 反射机制

    反射机制:

    反射机制是能够帮助我们把代码变得更加灵活,可扩展性更高,俗称“软编程、软写法”。例如:有一个文件里面有一些值,想要把这些值赋值到一个Student类的属性中,按照以前所学到的知识点,只能是通过文件流将文件里的值读取出来,然后再通过set方法将这些值都赋给Student类的属性。但是,这种方式是将代码写死了,在这之后会有一个问题就是如果文件里的内容发生变动,或者要把这个Student类更换成Dog类的话,就要重新修改代码。程序写好了部署到服务器上运行了,总不能时不时就打开来修改吧。
    示意图:

    image

    那么要解决这个问题,就得使用到反射机制,在怎么使用反射机制解决这个问题之前,我们先学习一个类,这个类名叫Class,注意这是类不是class关键字。每一个类都能获得Class对象,通过这个对象就可以操作那个类。例如:Dog类可以获得Class对象,通过这个对象可以构建Dog类的对象,还可以对Dog类的属性进行赋值,对方法能够进行调用等等,还能获得这个类的所有的信息,比如这个类的父类是哪个,实现了什么接口,路径在哪等等。
    获得Class对象的方法有三种,但是其中两种是死写法,一种是软写法,软写法是因为使用的字符串描述的类名,字符串是可以变动的,要更改类的时候只需要更改字符串即可。
    代码示例:
    image

    使用这个对象可以获得Test类的信息:
    image
    运行结果:
    image

    使用这个对象可以获得Test类的成员:
    image

    运行结果:
    image

    使用这个对象还可以对某个类的的属性进行赋值,还能调用方法和构造器,还能给方法和构造器传递参数。我们做个试验:声明一个Student类,在这个类里写一些属性、方法和构造器,然后通过Test类来进行赋值、调用和传递参数。
    Student类代码示例:
    image

    Test类代码示例:
    image

    运行结果:

    image

    现在我们就可以运用以上的知识点来解决一开始的那个问题了,先编辑一个文本里面写一些属性值,然后再写一个Teacher类写上对应的属性,然后将属性进行封装,然后写一个Test类通过Class对象来对Teacher类的属性进行赋值。
    文件内容:
    image
    Teacher类代码示例:

    image
    image

    Test类代码示例:

    image

    运行结果:

    image

  • 相关阅读:
    个人工作总结07
    软件项目第一个Sprint评分
    丹佛机场行李系统没能及时交工的原因
    第一次团队冲刺 5
    第一次团队冲刺4
    第一次团队冲刺3
    第一次团队冲刺2
    第一次团队冲刺 1
    风险评估
    团队开发——第一篇scrum报告
  • 原文地址:https://www.cnblogs.com/kaigexuetang/p/7233887.html
Copyright © 2011-2022 走看看