• 通过反射调用方法的私有属性及方法


    今天遇到一个问题,需要做一个校验方法,方法不难但是懒得写,记得有个地方有写过,但是去看的时候发现是私有的,无法通过对象调用,然后就想到了通过反射好像是可以获取到类私有的属性及方法的,后来通过实践,确实可以,特此记录一下,以免后期忘记

     1 //用到反射自然需要通过反射来获取类的对象,
     2 //通过class..forName(类路径.类名)获取
     3 Class<?> clazz = Class.forName("com.pansoft.osp.ifms.server.UpdateWlskSh");
     4 //需要获取一个类对象
     5 UpdateWlskSh updateWlskSh = new UpdateWlskSh();
     6 //通过clazz.getDeclaredMethod获取方法,参数是方法名称及方法需要传的参数
     7 Method method = clazz.getDeclaredMethod("checkNextZwqj",JConnection.class, String.class, String.class);
     8 //需要设置一下是否检查,false的话或报错
     9 method.setAccessible(true);
    10 //最后通过invoke 方法调用方法,获取的就是方法的返回值
    11 Object obj = method.invoke(updateWlskSh, conn, zzjg, pNextMonth);
    12 
    13 //获取私有属性的方法
    14 //参数为属性名
    15 Field declaredField = clazz.getDeclaredField(name);
    16 declaredField .setAccessible(true);
    17 privateStringField.get();
    18 //获取属性值
    19 //参数为实例化对象
    20 String fieldValue = (String)declaredField.get(updateWlskSh);
    21 
    22 //获取反射对象的方法也可以通过类名.calss 点出来,获取的方法是一样的

    有错误的地方希望指出;我坚信有错误才会有进步

  • 相关阅读:
    04_移动端-伪元素选择器
    03_移动端-结构伪类选择器
    02_移动端-属性选择器
    Dva+Antd创建React项目(一)
    Windows 10 使用打印机扫描
    中间件-redis
    #期望dp#51nod 2015 诺德街
    Codeforces Round #685 (Div. 2)
    USACO 4.2
    #保序回归问题,单调栈,二分#洛谷 5294 [HNOI2019]序列
  • 原文地址:https://www.cnblogs.com/lqlbk/p/12726483.html
Copyright © 2020-2023  润新知