博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用反射操作私有(Private)方法和属性
阅读量:6772 次
发布时间:2019-06-26

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

1.操作私有方法:

这是一个包含私有方法的类Private:

public class Private {
private String sayHello(String name) {
return "hello: " + name; } }

在另一个类TestPrivate中调用Private中的私有方法sayHello():

public class TestPrivate {
public static void main(String[] args) throws Exception {
Private p = new Private(); Class
classType = p.getClass(); //getDeclaredMethod与getMethod方法不同,getDeclaredMethod返回所有声明的变量, //getMethod只返回public变量. Method method = classType.getDeclaredMethod("sayHello", new Class[] { String.class }); method.setAccessible(true);//压制Java的访问控制检查 String str = (String)method.invoke(p, new Object[]{"zhangsan"}); System.out.println(str); } }

输出结果:hello: zhangsan

 

2.操作私有属性

这是一个包含私有属性的类Private1:

public class Private1 {
private String name = "zhangsan"; public String getName(){
return name; } }

在另一个类TestPrivate1中修改Private中的私有属性name:

public class TestPrivate1 {
public static void main(String[] args) throws Exception {
Private1 p = new Private1(); Class
classType = p.getClass(); //getDeclaredField与getField的差异同getDeclaredMethod与getMethod Field field = classType.getDeclaredField("name"); field.setAccessible(true);//压制Java对访问修饰符的检查 field.set(p, "lisi"); System.out.println(p.getName()); } }

输出结果为:lisi

 

本文为<北京圣思园Java培训教学视频Java.SE 反射机制大总结>视频笔记

转载于:https://www.cnblogs.com/myfjd/archive/2012/01/13/2322083.html

你可能感兴趣的文章
Java && Hibernate validator 校验
查看>>
系统启动流程
查看>>
Maven scope含义的说明
查看>>
VSAN 第 10 部分 – 实时更改虚拟机存储策略
查看>>
曾国藩家书
查看>>
哈哈!
查看>>
Maven私服不能自动通过内部nexus下载远程仓库的jar
查看>>
抽象类
查看>>
给《Mahout in action》作者的一封信
查看>>
去除inline-block元素间间距的N种方法
查看>>
初到贵网,留下第一个脚印
查看>>
oracle分割字符串后以单列多行展示
查看>>
macOS上flutter开发环境搭建填坑过程(续)
查看>>
struts2_自我总结
查看>>
【MongoDB for Java】Java操作MongoDB
查看>>
12 个有效的提高编程技能的方法
查看>>
mongodb windows历史版本下载
查看>>
Filebeat 配置文件中文对照
查看>>
tableViewCell cell 图片网络下载的 基本处理原理
查看>>
ThinkPHP3.2.2-核心包Think\Log类问题、重构与建议(附修改代码)
查看>>