搞懂Java的反射機制
1.什么是反射?
java的反射機制是指可以在運行狀態下獲取類和對象的所有屬性和方法。
2.反射的作用?
1、在運行時獲取一個類/對象的成員變量和方法
2、在運行時創建一個類的對象
3、在運行時判斷一個對象是否屬于一個類
3.反射有哪些具體的應用場景?
1、JDBC連接數據庫時,使用Class.forName()通過反射加載數據庫的驅動。
2、Spring的IOC (控制反轉)
使用的就是工廠模式+反射的原理,需要使用到的類事先在配置文件中先聲明,需要時根據配置的類名動態生成對象。
4.反射的缺點?
反射代碼的執行速度慢,性能差,如果有其他方案可以替代,建議不使用。
5.如何獲取類對象?
1、Class.forName(“xxx”)
try {clazz = Class.forName("com.reflection.User");
} catch (ClassNotFoundException e) {e.printStackTrace();
}
2、通過對象的getClass()方法
Class clazz = user.getClass();
3、直接通過類名獲取類對象
Class clazz = User.class;
6.如何通過反射創建對象?
1、調用無參構造器
try {clazz = Class.forName("com.reflection.User");
} catch (ClassNotFoundException e) {e.printStackTrace();
}
Object obj = clazz.newInstance();
2、調用有參構造器
try {clazz = Class.forName("com.reflection.User");
} catch (ClassNotFoundException e) {e.printStackTrace();
}
Constroctor constroctor = clazz.getConstructor(String.class,Integer.class);
Object obj = constroctor.newInstance("龍哥", 29);