import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;/*** 通过反射创建私有化构造的类,并为私有化属性复制。调用私有化方法** @author silence*/
public class Demo1 {public static void main(String[] args) throws Exception {//获得字节码文件Class<?> clazz = Class.forName("operate425.operate.operate3.User");//通过反射获得user对象User user = getMethod1(clazz);//通过反射给私有的属性设置值setField(user, clazz);//打印私有化方法Method getMethod = clazz.getDeclaredMethod("get");getMethod.setAccessible(true);getMethod.invoke(user);}/*** 通过反射给私有的属性设置值** @param user  user* @param clazz clazz*/private static void setField(User user, Class<?> clazz) throws Exception {//获得成员变量引用并设置值Field username = clazz.getDeclaredField("username");//突破成员变量private 限制username.setAccessible(true);//获得password属性应用Field password = clazz.getDeclaredField("password");//突破成员变量private 限制password.setAccessible(true);//给成员变量设置属性值username.set(user, "通过反射设置username值");password.set(user, "通过反射设置password值");//打印user对象System.out.println(user);}/*** 通过反射获得user对象** @param clazz clazz* @return User*/private static User getMethod1(Class<?> clazz) throws Exception {//获得private 修饰的构造方法Constructor<?> declaredConstructor = clazz.getDeclaredConstructor(String.class);//突破构造方法private限制declaredConstructor.setAccessible(true);//创建user对象User user = (User) declaredConstructor.newInstance("构造方法实参");//打印user对象System.out.println(user);return user;}
}class User {private String username;private String password;private User(String name) {System.out.println("user私有有参构造获得的形参:" + name);System.out.println("user私有构造被调用");}private void get() {System.out.println("user私有化get方法被调用");//打印成员变量System.out.println("user私有化get方法:" + username);System.out.println("user私有化get方法:" + password);}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +'}';}
}

通过反射创建私有化构造的类,并为私有化属性复制。调用私有化方法相关推荐

  1. 批量构造四阶类自然数奇偶简单幻立方的一种方法

    批量构造四阶类自然数奇偶简单幻立方的一种方法 ※※※※※※ 作者:劉國增先生(河南原陽) 來稿時間:2016年11月22日下午3:54分. 貼博時間:2016年11月29日. ※※※※※※ ※※※EN ...

  2. java未知对象调用其某个方法_引用一个类的属性或调用其方法,必须以这个类的对象为前缀。...

    [多选题]根据<建设工程项目管理规范>(GB/T50326-20 17 )施工项目经理应履行的职责有( ) [判断题]数组作参数被使用时,数组名后必须加方括号 [判断题]方法中最多能有一个 ...

  3. Python类与对象技巧(1):字符串格式化、封装属性名、可管理的属性、调用父类方法

    1. 自定义字符串的格式化 _formats = {'ymd' : '{d.year}-{d.month}-{d.day}','mdy' : '{d.month}/{d.day}/{d.year}', ...

  4. java 反射私有变量赋值_通过反射,操作私有成员变量(取/赋值),调用私有方法...

    Java的反射工具很强大,有句著名的话:No reflection ,no frameworks. 工作中直到涉及到UT,才体会到它的重要性,现归纳整理一个小例子: 反射工具类:import java ...

  5. 反射创建实例时出现异常 class *** cannot access a member of class *** with modifiers

    一开始遇到的时候很郁闷,不只是哪个地方出问题了. 起因是我在做一个工厂模式的小测试,读取配置文件,根据读取结果创建相应的工厂实例,这里使用反射技术,就像下面一样 String name = DOM4J ...

  6. Python类与对象最全总结大全(类、实例、属性方法、继承、派生、多态、内建函数)

    目录 面向对象编程 常用术语/名词解释 抽象/实现 封装/接口 合成 派生/继承/继承结构 泛化/特化 多态 自省/反射 访问限制 私有属性和公有属性 私有方法的设置 类 创建类 声明与定义 类属性 ...

  7. 对象属性的调用_PyQt5面向对象编程,类和类的继承

    "前面的文章讲了新建一个面板的代码流程,但是它是面向过程的,这种编程思路繁琐且不易移植,而面向对象的编程思路就没有这些问题" 01面向对象编程 假设我们想制作几个面板,每个面板上有 ...

  8. php 类调用本身方法,PHP 类中方法的声明与调用

    方法(method)与函数非常类似,只不过方法是用来定义类的行为的. 与函数一样,方法可以接受输入参数,可以向调用者返回一个值. 方法的调用也与函数相同,只是在方法签名要加上调用方法的对象的名称,如下 ...

  9. 通过反射创建新类示例的两种方式及比较

    通过反射创建新类示例的两种方式及比较 作者BLOG:http://blog.csdn.net/fenglibing 通过反射创建新的类示例,有两种方式: Class.newInstance() Con ...

最新文章

  1. 深入理解Linux I/O系统
  2. ibm服务器报错代码大全_微信认证订阅号开发者模式服务器配置自定义菜单PHP独立完整版...
  3. 原生YII2 增删改查的一些操作(非ActiveRecord)
  4. SQL 左连接(left join) 排序 分页 中遇到的未按理想状态排序分页的解决方案
  5. 截取视图某一段另存为部分视图(Partial View)
  6. Jetson nano安装JupyterLab
  7. tf+gpu无法复现
  8. VTK:Video之OggTheora
  9. QT的QDesignerContainerExtension类的使用
  10. oracle的sql优化
  11. 只听几句话,百度AI就能模仿你的声音 | 附论文
  12. JQuery操作cookie插件
  13. python语言基础与应用 mooc答案_Python语言基础与应用_中国大学 MOOC_章节考试选修课答案...
  14. 从零开始入门芯片行业
  15. iPhone app 和android app开发环境和语言的区别
  16. pip install 时 WARNING: No metadata found in e:\anaconda\lib\site-packages 问题解决
  17. uclinux 嵌入式linux,2017最新嵌入式操作系统uCLinux分析
  18. gentoo linux 安装记录
  19. app做好后如何上线_自己做的app从做好到上架需要什么手续或过程?
  20. 毕业论文_页眉+页码

热门文章

  1. sql每个月每个人的花销占比_11月:每个认真生活的人,都值得被认真对待
  2. linux传文件file,linux文件的传输与压缩快速入门
  3. python安装报错类型_Python处理验证码第一篇(pytesser初探及报错处理)
  4. python array函数_Python 中的range()函数与array()函数
  5. LDR 、ADR介绍
  6. CE下基于Zylonite硬件平台的SD卡驱动开发
  7. 计算机d,计算机词汇d
  8. c++ 字符串拼接_字符串拼接新姿势:StringJoiner
  9. fread读取整个文件_qt如何实现大文件的加载和显示
  10. spring boot 入门_玩转springboot2.x之快速入门开山篇