色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java靜態反射和動態反射

王浩然1年前6瀏覽0評論

Java反射是指在程序運行時,可以動態加載一個類,在程序運行期間動態獲取類的信息,并對類的成員和方法進行操作的能力。Java反射主要包括靜態反射和動態反射。

靜態反射是指在編譯期間就已將變量的類型確定,而且在程序運行期間不會發生變化,因此只需要在代碼中使用類的相關信息即可。使用靜態反射可以獲取類的構造器、方法、屬性等信息。

public class ReflectTest {
public static void main(String[] args) throws Exception {
// 獲取類對象
Class clazz = Class.forName("com.example.demo.User");
// 獲取構造器信息
Constructor[] constructors = clazz.getDeclaredConstructors();
for (Constructor c : constructors) {
System.out.println(c);
}
// 獲取方法信息
Method[] methods = clazz.getMethods();
for (Method m : methods) {
System.out.println(m);
}
// 獲取屬性信息
Field[] fields = clazz.getDeclaredFields();
for (Field f : fields) {
System.out.println(f);
}
}
}

動態反射是指在程序運行期間,可以根據用戶的需要來反射調用類的相關信息,可以通過新建實例、方法調用、獲取屬性值等動態執行代碼。使用動態反射需要使用到Class、Constructor、Method、Field等反射類。

public class ReflectTest {
public static void main(String[] args) throws Exception {
// 獲取類對象
Class clazz = Class.forName("com.example.demo.User");
// 獲取帶參構造器
Constructor constructor = clazz.getConstructor(String.class, Integer.class);
// 新建實例
Object obj = constructor.newInstance("張三", 18);
// 調用方法
Method method = clazz.getMethod("printInfo");
method.invoke(obj);
// 獲取屬性值
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
Object value = field.get(obj);
System.out.println(value);
}
}

Java反射在實際開發中應用廣泛,常用于框架、ORM映射、AOP、類對象動態生成等場景。