首页 > 其他分享 >Junit和反射

Junit和反射

时间:2022-11-03 22:36:23浏览次数:47  
标签:反射 String Object class 获取 Method Constructor Junit

@Before  :初始化方法,用于资源申请,所有测试方法在执行之前都会先执行该方法

 

@After  :释放资源方法,在所有测试方法执行完后,都会自动执行该方法

 

反射:框架设计的灵魂

  * 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码

  * 反射:将类的各个组成部分封装为其他对象,这是反射的机制

     * 好处:

      1  可以在程序运行过程中,操作这些对象

      2  可以解耦,提高程序的可扩展性

  * 获取class对象的方式:

    1  Class.forName("全类名"):将字节码文件加载进内存,返回class对象

      *  多用于配置文件,将类名定义在配置文件中。读取文件,加载类

    2  类名.class::通过类名的树形class获取

      *  多用于参数的传递

    3  对象.getClass():getClass()方法在Object类中定义着

      *  多用于对象的获取字节码的方式

    *  结论  

      同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个

 

  * Class对象功能  

    *  获取功能:

      1  获取成员变量们

        *  Field[]  getFields()

        *  Field[]  getField(String name)

 

        *  Field[]  getDeclaredFields()

        *  Field[]  getDeclaredField(String name)

      2  获取构造方法们

        *  Constructor<?>  getConstructors()

        *  Constructor<T>  getConstructors(类<?>... parameterTypes)

 

        *  Constructor<?>  getDeclaredConstructors()

        *  Constructor<T>  getDeclaredConstructor(类<?>... parameterTypes)

      3  获取成员方法们

        * Method[]  getMethods()

        * Method getMethod(String name,类<?>... parameterTypes)

        * Method[]  getDeclaredMethods()

        * Method getDeclaredMethod(String name,类<?>... parameterTypes)

      4  获取类名

        * String getName()

  *  Field:成员变量

    *  操作:

      1  设置值

        * void set(Object obj,Object value)

      2  获取值

        *  get(Object obj)

      3  忽略访问权限修饰符的安全检查

        *  setAccessible(true)

  *  Constructor:构造方法

    Constructor constructor = personClass.getConstructor(String.class,inbt,class);

    //创建对象  

    Object person = constructor.newInstance("张三",23); 

 

 

    Constructor constructor1 = personClass.getConstructor();

    //创建对象

    Object person1 = constructor1.newInstance();

    Object o = personClass.newInstancec();   //创建空的对象也可以用类里面的newInstance()

 

  *  Method:执行方法

    //获取Person的Class对象

    Class personClass = Person.class;

    //获取指定名称的方法

    Method eat_method = personClass.getMethod("eat");

    Method eat_method2 = personClass.getMethod("eat",String.class);

    Person p = new Person();

    //执行方法

    eat_method.invoke(p);

    eat_method2.invoke(p,"饭");

标签:反射,String,Object,class,获取,Method,Constructor,Junit
From: https://www.cnblogs.com/zlyyds/p/16855842.html

相关文章

  • Calico 路由反射模式权威指南
    1.概述作为Kubernetes最长使用的一种网络插件,Calico具有很强的扩展性,较优的资源利用和较少的依赖,相较于Flannel插件采用Overlay的网络,Calico可以通过三层路由的......
  • C++ 反射机制
    前言反射的概念:指程序在运行时,访问、检测和修改它本身状态或行为的一种能力。wikipedia简单的来说,就是一种自描述和自控制的能力。如果联想到镜子,就可以很好的理解,你能通......
  • junit5
    引入依赖<!--https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api--><dependency><groupId>org.junit.jupiter</groupId><artifactId>......
  • Java反射
    一Java安全可以从反序列化漏洞开始说起,反序列化漏洞⼜可以从反射开始说起正是反射使得Java拥有了动态特性,对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私......
  • 多线程 & 反射 & 注解 & JDBC 核心点总结
    多线程核心点:线程安全创建线程的两种方式线程生命周期获取、修改线程名获取当前线程对象静态方法sleep()通过异常终止线程的睡眠interrupt()强行终止线程合理......
  • Java反射
    Java反射动态语言:动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上变化,比如常见的JavaScript就是动态语言,除此之外Ru......
  • 【单元测试】Junit 4(一)--白盒测试方法
    1.0流程图标识1.1语句覆盖法(C0标准)①目标​ 程序中的每个可执行语句至少被执行一次后面如未说明那就是还是用的这个样例程序源代码:importjava.util.Scanner;p......
  • 一篇了解Java反射
    反射首先从运行原理了解为什么要用反射,当我们执行一段代码时,代码经过javac编译得到.class的字节码文件,再经过类加载器的loadClass()方法创建Class类对象到堆中;当我们实......
  • day13-(事务&mvc&反射补充)
    回顾:jsp:java服务器页面jsp的脚本jsp的注释html注释java注释jsp注释<%----%>jsp的指令page:声明页面一些属性重要的属性:im......
  • 反射(Reflection)
    反射(Reflection)所谓反射就是在Java运行期间,程序可以拿到一个对象的所有信息。反射是为了解决在对一个对象完全未知的情况下调用其方法还产生的。通过Class实例获取class......