JVM是内存中的虚拟机,jvm的存储,就是内存
JVM架构
Class Loader:依据特定格式,加载class文件到内存中,并不是自己随便写个.class文件都可以被加载
Execution Engine:对命令进行解析执行 (解析class文件中字节码)
Native interface:融合不同的开发语言的原生类库为java所用.(JVM底层也是c和c++实现的,调用其他语言的类库
避免重复造轮子 Class.forName())
Runtime Data Area:JVM内存空间结构模型
反射代码:
Class<Robot> rb = (Class<Robot>) Class.forName("com.imooc.Robot");
Robot robot = rb.newInstance();
Field[] declaredFields = rb.getDeclaredFields();
for (int k = 0; k < declaredFields.length; k++) {
System.out.println(declaredFields[k]);
}
Field name = rb.getDeclaredField("name");
name.setAccessible(true);
name.set(robot,"张三");
Field age = rb.getDeclaredField("age");
age.setAccessible(true);
age.set(robot,12);
Method sayHi = rb.getDeclaredMethod("sayHi", String.class, int.class);
sayHi.invoke(robot,"李四",66);
Method getAge = rb.getDeclaredMethod("getAge", String.class, int.class);
getAge.setAccessible(true);
getAge.invoke(robot,"万五",77);