JAVA反射中使用setAccessible使private可以被访问,但不知道为什么我的不行

weixin_44842531 2019-08-03 04:00:42
如果把图二的私人变量改为共有的,就没有异常了
...全文
350 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小贤生 2020-12-18
  • 打赏
  • 举报
回复
.getConstructor() 只能获取类中public修饰的构造器方法; .getDeclaredConstructor() 可以获取类中所有访问修饰符修饰的构造器方法; 你需要获取的时private的构造器方法,因此应该使用 c.getDeclaredConstructor(int.class, String.class, Float.class);
faith.huan 2019-08-04
  • 打赏
  • 举报
回复
获取构造方法的方法使用getDeclaredConstructor代替, 你可以点getConstructor这个方法去看看,注释如下


   /**
     * Returns a {@code Constructor} object that reflects the specified
     * public constructor of the class represented by this {@code Class}
     * object. ....
   */

只能获取public 的constructor


            // getConstructor只能获取public的构造方法
            // Constructor constructor = c.getConstructor(int.class, String.class, Float.class);
            Constructor declaredConstructor = c.getDeclaredConstructor(int.class, String.class, Float.class);
            declaredConstructor.setAccessible(true);
            Object obj = declaredConstructor.newInstance(10, "心态不好", 5.26f);

            System.out.println(obj);

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧