博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回忆(四):通过反射获得私有构造实例化得到对象
阅读量:5242 次
发布时间:2019-06-14

本文共 1790 字,大约阅读时间需要 5 分钟。

package reflex;import java.lang.reflect.Constructor;/* * 需求:通过反射获取私有构造方法并使用 * private Person(String name) {} */public class ReflectDemo04_getConstructor_private_newInstance {	public static void main(String[] args) throws Exception{		// 获取字节码对象		Class  c = Class.forName("reflex.Person");				// 获取私有构造方法		// NoSuchMethodException 没有这个方法异常		// 此方法无法找到其中的私有和默认修饰符修饰的构造方法		// Constructor con = c.getConstructor(String.class);				// java.lang.IllegalAccessException 非法的访问异常		// 暴力访问		Constructor con = c.getDeclaredConstructor(String.class);				// 反射很强大		// public void setAccessible(boolean flag)        // throws SecurityException将此对象的 		// accessible 标志设置为指示的布尔值。		// 值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。		// 值为 false 则指示反射的对象应该实施 Java 语言访问检查。		con.setAccessible(true); // 设置可访问为:true		// 用该私有构造方法创建对象		Object obj = con.newInstance("mzy");		// 一般的java反编译工具就是使用了反射的机制		System.out.println(obj);						// 然而java是号称安全的语言,		// 所以我们在写java文件的时候,可以加两行加密的语句		// 按照某种特殊的运算方法,对数据进行异或操作		// 也能进行加密	}}

其中的person:

package reflex;public class Person {	// 成员变量	private String name;	int age;	public String address;	// 构造方法	public Person() {	}	Person(String name, int age) {		this.name = name;		this.age = age;	}	private Person(String name) {		this.name = name;	}	public Person(String name, int age, String address) {		this.name = name;		this.age = age;		this.address = address;	}	// 成员方法	public void show() {		System.out.println("show");	}	public void method(String s) {		System.out.println("method" + s);	}	public String getString(String s, int i) {		return s + "---" + i;	}	@Override	public String toString() {		return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";	}	private void function() {		System.out.println("function");	}}

转载于:https://www.cnblogs.com/mzywucai/p/11053447.html

你可能感兴趣的文章
Linux-监控与安全运维之Nagios
查看>>
Android 调用百度地图所需权限
查看>>
GDB调试
查看>>
【模板】树状数组2
查看>>
c语言第五次作业--函数
查看>>
CF723D. Lakes in Berland[DFS floodfill]
查看>>
POJ 2752 Seek the Name, Seek the Fame [kmp]
查看>>
LeetCode Jump Game
查看>>
MongoDB快速学习笔记
查看>>
XMPP之文件传输报文
查看>>
ubuntu16.04中docker安装curl拒绝连接问题
查看>>
maven私服配置国内aliyun中央仓库
查看>>
Session和Cookie的定义以及区别
查看>>
vue---自定义指令
查看>>
开发小技巧: 如何在jQuery中禁用或者启用滚动事件.scroll
查看>>
es6 扩展运算符 三个点(...)
查看>>
webpack3整理(第二节/满三节)
查看>>
Oracle DECODE函数的用法详解
查看>>
iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建...
查看>>
Ansible之Playbook详解
查看>>