当前位置: 首页 > news >正文

行业网站排名游戏推广是干什么的

行业网站排名,游戏推广是干什么的,杭州视频网站建设,互联网app网站建设方案模板下载文章目录 使用反射调用类的私有方法类实现方法实现代码 使用反射调用类的私有内部类的私有方法类实现方法实现代码 在进行单元测试时,我们往往需要直接访问某个类的内部类或者某个类的私有方法,此时正常的调用就无能为力了,因此我们可以使用反…

文章目录

    • 使用反射调用类的私有方法
      • 实现方法
      • 实现代码
    • 使用反射调用类的私有内部类的私有方法
      • 实现方法
      • 实现代码

在进行单元测试时,我们往往需要直接访问某个类的内部类或者某个类的私有方法,此时正常的调用就无能为力了,因此我们可以使用反射进行调用。

使用反射调用类的私有方法

package net.mooctest;public class outClass{public outClass() {}private void testMethod1(){System.out.println("调用了outClass的私有方法testMethod1");}//带参数的方法private void testMethod2(int a){System.out.println("调用了outClass的私有方法testMethod2,传入参数为:" + a);}
}

实现方法

  • 获取类的Class对象
    • Class class = Class.forName("类名")
    • Class class = 类实例.getClass()
  • new一个实例
    • Object object = class.newInstance();
  • 获取私有方法
    • Method method = class.getDeclaredMethod("方法名",参数类型1.class,参数类型2.class,...);
  • 设置方法可访问
    • method.setAccessible(true);
  • 调用私有方法
    • method.invoke(类实例,参数1,参数2,...);

实现代码


import static org.junit.jupiter.api.Assertions.*;import java.lang.reflect.Method;import org.junit.jupiter.api.Test;import net.mooctest.outClass;class outClassTest {@Testfinal void test1() throws Exception {outClass out = new outClass();Class class1 = out.getClass();Object object = class1.newInstance();//获取私有方法Method method = class1.getDeclaredMethod("testMethod1");//设置方法可访问method.setAccessible(true);//调用方法method.invoke(object);}@Testfinal void test2() throws Exception {outClass out = new outClass();Class class1 = out.getClass();Object object = class1.newInstance();//获取有参私有方法Method method = class1.getDeclaredMethod("testMethod2",int.class);//设置方法可访问method.setAccessible(true);//调用方法method.invoke(object,10);}}

使用反射调用类的私有内部类的私有方法

package net.mooctest;public class outClass{public outClass() {}private void testMethod1(){System.out.println("调用了outClass的私有方法testMethod1()");}//带参数的方法private void testMethod2(int a){System.out.println("调用了outClass的私有方法testMethod2(),传入参数为:" + a);}private class inClass{public inClass() {// TODO Auto-generated constructor stub}public inClass(int a) {System.out.println("调用了有参构造器 " + a);}private void inMethod1() {System.out.println("调用了类的私有内部类的私有方法inMethod1()");}}
}

实现方法

  • 获取私有内部类的Class对象
    • Class class = Class.forName("外部类名$内部类名")
  • 获取私有内部类构造器,无参构造器参数只填外部类名,有参构造器为(外部类名 ,参数类名…)
    • Constructor constructor = class.getDeclaredConstructor(outClass.class,参数类型1.class,参数类型2.class,...);
  • 设置构造器可访问
    • constructor.setAccessible(true);
  • new一个外部类对象,以便产生内部类实例(outClass:外部类名)
    • outClass out = new outClass();
  • 新建一个内部类实例,参数为外部类实例,若为有参构造器,后面再添加参数
    • Object object = constructor.newInstance(外部类实例,构造器参数1.class,构造器参数2.class,...);
  • 获取私有方法
    • Method method = class.getDeclaredMethod("inMethod1");
  • 设置方法可访问
    • method.setAccessible(true);
  • 调用方法
    • method.invoke(object);

实现代码

package test;import static org.junit.jupiter.api.Assertions.*;import java.lang.reflect.Constructor;
import java.lang.reflect.Method;import org.junit.jupiter.api.Test;import net.mooctest.outClass;class outClassTest {@Testfinal void test3() throws Exception {//设置类名,外部类名$内部类名String className = "net.mooctest.outClass$inClass";Class class1 = Class.forName(className);//获取私有内部类构造器,无参构造器参数只填外部类名,有参构造器为(外部类名 ,参数类名...)Constructor constructor = class1.getDeclaredConstructor(outClass.class);//设置构造器可访问constructor.setAccessible(true);//new一个外部类对象,以便产生内部类实例outClass out = new outClass();//新建一个内部类实例,参数为外部类实例,若为有参构造器,后面再添加参数Object object = constructor.newInstance(out);//获取私有方法Method method = class1.getDeclaredMethod("inMethod1");//设置方法可访问method.setAccessible(true);//调用方法method.invoke(object);}@Testfinal void test4() throws Exception {//设置类名,外部类名$内部类名String className = "net.mooctest.outClass$inClass";Class class1 = Class.forName(className);//获取私有内部类构造器,无参构造器参数只填外部类名,有参构造器为(外部类名 ,参数类名...)Constructor constructor = class1.getDeclaredConstructor(outClass.class,int.class);//设置构造器可访问constructor.setAccessible(true);//new一个外部类对象,以便产生内部类实例outClass out = new outClass();//新建一个内部类实例,参数为外部类实例,若为有参构造器,后面再添加参数Object object = constructor.newInstance(out,10);//获取私有方法Method method = class1.getDeclaredMethod("inMethod1");//设置方法可访问method.setAccessible(true);//调用方法method.invoke(object);		}}
http://www.ds6.com.cn/news/111588.html

相关文章:

  • 教做黏土手工的网站国外网站谷歌seo推广
  • 个人网站建站流程企业网站优化服务
  • 幻灯片在什么网站做品牌网络营销案例
  • 泗阳网站建设天津搜索引擎seo
  • 做网站需要学什么软件百度怎么创建自己的网站
  • 浙江杭州疫情最新消息网站推广seo教程
  • 甘肃做网站找谁网站分析报告范文
  • 网站开发需求文档模板网络营销最火的案例
  • 武汉做网站公司排名百度云网页版登录入口
  • 武汉seo结算专业黑帽seo
  • 香港网站建设 深圳分公司cms网站
  • 专注与开发网站的北京网络公司关键词出价计算公式
  • thinkphp大型网站开发发布会直播平台
  • 网站顶部固定怎么做厦门百度seo排名
  • 网页制作淘宝网站建设网站按天扣费优化推广
  • 网站设计合同自己如何优化网站排名
  • 做定制校服的网站四平网站seo
  • wordpress 需要多大数据库搜索引擎优化的主题
  • 个体制作网站设计网站免费网站免费
  • 四川省凉亭建设工程有限公司网站热搜榜排名今日
  • 南京做网站哪家好常见的网络推广方式有哪些
  • 长沙网站制作作网站如何优化排名软件
  • 拼多多代运营谷歌seo排名技巧
  • 网站制作的核心要点是什么种子搜索神器在线搜
  • 公务员可以做网站吗百度账号怎么改用户名
  • 北京网站推广优化怎么建立一个属于自己的网站
  • 知名网站有哪些聊城网站推广公司
  • 万江仿做网站网站设计制作在哪里找
  • 马鞍山做公司网站的腾讯广告推广怎么做
  • vue企业门户网站模板网络服务提供者收集和使用个人信息应当符合的条件有