JVM(四),什么是反射
2024-09-04 21:39:02
四、什么是反射
1.反射理论
2.反射实践
(1)创建Robot类
public class Robot {
private String name;
public void sayHi(String helloSentence){
System.out.println(helloSentence + " " + name);
}
private String throwHello(String tag){
return "Hello " + tag;
}
static {
System.out.println("Hello Robot");
}
}
(2)各种操作
public class ReflectSample {
public static void main(String[] args) throws Exception{
Class rc = Class.forName("com.interview.javabasic.reflect.Robot");
Robot r = (Robot) rc.newInstance();
System.out.println("Class name is " + rc.getName()); //调用私有方法rc.getDeclaredMethod
Method getHello = rc.getDeclaredMethod("throwHello", String.class);
getHello.setAccessible(true);
Object str = getHello.invoke(r, "Bob");
System.out.println("getHello result is " + str); //调用PUBLIC方法rc.getMethod
Method sayHi = rc.getMethod("sayHi", String.class);
sayHi.invoke(r, "Welcome"); //设置私有属性
Field name = rc.getDeclaredField("name");
name.setAccessible(true);
name.set(r, "Alice");
sayHi.invoke(r, "Welcome"); }
}
最新文章
- JavaScript系列文章:从let和const谈起
- 【 2013 Multi-University Training Contest 2 】
- Knockout.Js官网学习(value绑定)
- yii2中表单的字段标签名称
- linux bash脚本把A和B文件中有相同ID的B文件的内容输出到文件C
- 【poj3693】Maximum repetition substring(后缀数组+RMQ)
- codevs 3044 矩形面积求并 (扫描线)
- html系列教程--embed fieldset legend figure figurecaption
- java多线程系列(一)
- 【Windows 10 应用开发】细说文本资源文件(resw)
- git常用命令速查
- 关于React Native 安卓首屏白屏优化
- C# — 调用dll出现试图加载不正确格式的程序问题
- 深度学习基础(三)NIN_Network In Network
- Standalone的更改方式
- [UE4]解决角色影子的问题
- Java编程的逻辑 (20) - 为什么要有抽象类?
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十五:FIFO储存模块(同步)
- webpack创建library及从零开始发布一个npm包
- HBase 架构与工作原理2 - HBase 组件