標籤:anim div 構造 私人 animal 使用 北京 str string
關於反射:
1.需要瞭解jvm類的載入機制(java進階部分會詳細介紹)
2.反射的API其實只要多看看API和源碼,很容易就懂了。
下面是代碼,簡單講解反射的使用:
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * JAVA反射機制(首先對於反射,建議大家去看一下javaapi,要懂得看源碼,這樣才能更深入瞭解反射的原理,並且能很好的在工作中使用) * 定義: * JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性; * 這種動態擷取的資訊以及動態調用對象的方法的功能稱為java語言的反射機制。 * @author dyq * */public class ReflexTest { public static void main(String[] args) { try { /** * 返回一個運行時的class對象 */ Class<?> classAnimal = Class.forName("cn.review.day03.entity.Animal"); /** * 建立由此類對象表示的類的新執行個體 */ Object object = classAnimal.newInstance(); /** * 擷取所有構造方法 */ Constructor<?>[] constructors = classAnimal.getConstructors(); for(int i=0;i<constructors.length;i++) { System.out.println(constructors[i]); } /** * 擷取類對象中的方法,並調用該方法 */ classAnimal.getMethod("setName",String.class).invoke(object, "大象"); classAnimal.getMethod("setAddress",String.class).invoke(object, "北京"); classAnimal.getMethod("setCount",int.class).invoke(object, 20); Method method = classAnimal.getMethod("getMyString"); System.out.println((String)method.invoke(object)); /** * 擷取共有屬性方法getFields * 擷取私人屬性方法getDeclaredFields */ Field[] fields = classAnimal.getDeclaredFields(); for(int i=0;i<fields.length;i++) { Field field = fields[i]; System.out.println(field); } } catch (Exception e) { e.printStackTrace(); } }}
JAVA基礎部分複習(五、JAVA反射)