JAVA內存結構:程序運行時 JVM 對內存的管理與分配 (下圖是內存結構)
JAVA內存模型:共享內存中 多線程 讀寫操作的行爲規範
Java虛擬機規範:
Java SE8:鏈接:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.4
JAVA 反射示意圖:
反射原理:通過創建.class 文件裝載到JVM時創建 .class文件對應的類對象來獲取類的成員的過程
1.獲取Class 對象的3種方法:
User user = new User(); //用戶類
Class clazz= user.getClass();
Class clazz1=User.class;
Class clazz3= Class.forName("reflection.demo.User");
Class clazz4= Class.forName("reflection.demo.User",false,clazz1.getClassLoader());
Class clazz5= Class.forName("reflection.demo.User",true,clazz1.getClassLoader());
2.獲取類的 字段:
//獲取類的public 修飾的字段:
Field[] fields= clazz1.getFields();
for(Field field:fields){
System.out.println(field);
}
//獲取類的所有修符修飾字段:
Field[] fields2= clazz1.getDeclaredFields();
for(Field field2:fields2){
System.out.println(field2);
}
3.獲取類的方法:
Method[] methods = clazz1.getMethods(); for(Method method:methods){ System.out.println(method); } System.out.println("==獲取所有public Method start=="); System.out.println("==獲取所有 Method start=="); Method[] methods2 = clazz1.getDeclaredMethods(); for(Method method2:methods2){ System.out.println(method2); }