Java反射之基礎概念
阿新 • • 發佈:2018-07-15
ide 包名 void java 類名 super 運行 生成 over
0.實例準備
package com.blueStarWei.invoke; public class Student { private String name; public Student() { } public Student(String name) { super(); this.name = name; } public void setName(String name) { this.name = name; } public String getName() {return name; } @Override public String toString() { return "Student [name=" + name + "]"; } }
1. 什麽是反射
反射是在運行時(非編譯時)動態獲取類型的信息(比如:接口信息、成員信息、方法信息等),然後根據這些獲取的信息創建對象、訪問修改成員、調用方法。
2. 獲取Class類的方式(3種):
//方式一:Class.forName("包名.類名") Class stu1 = Class.forName("com.blueStarWei.invoke.Student");//方式二:類名.class Class stu2 = Student.class; //方式三:實例.getClass() Class stu3 = new Student().getClass();
3. 創建實例對象
Student student = (Student) stu.newInstance();
備註:1)該方法通過無參構造的方式創建實例
2)New一個對象的時候,類可以沒有被加載;使用newInstance()方法的時候,必須保證這個類已經加載且已經連接【通過Class.forName()實現】。
Class clazz = Class.forName("com.blueStarWei.invoke.Student"); Student student1= (Student) clazz.newInstance(); //等價於 Student student2 = new Student();
4. 反射的作用
4.1 判斷任意一個對象所屬的類;
4.2 判斷任意一個類所具有的成員變量和方法;
4.3 調用任意對象的方法;
4.4 構造任意一個類的對象;
4.5 生成動態代理操作。
Java反射之基礎概念