下面是一個簡單的Java反射示例,演示了如何使用反射機制獲取類的信息并調用其方法:
import java.lang.reflect.Method;class MyClass {private String name;public void setName(String name) {this.name = name;}public String getName() {return name;}
}public class ReflectionExample {public static void main(String[] args) throws Exception {// 獲取MyClass類的Class對象Class<?> clazz = MyClass.class;// 創建MyClass對象MyClass myClass = (MyClass) clazz.newInstance();// 獲取setName方法Method setNameMethod = clazz.getDeclaredMethod("setName", String.class);// 調用setName方法設置屬性值setNameMethod.invoke(myClass, "John");// 獲取getName方法Method getNameMethod = clazz.getDeclaredMethod("getName");// 調用getName方法獲取屬性值String name = (String) getNameMethod.invoke(myClass);System.out.println("Name: " + name);}
}
該示例中,我們使用反射機制獲取了MyClass類的Class對象,并通過Class對象的newInstance方法創建了MyClass對象。然后,我們使用getDeclaredMethod方法獲取了MyClass類的setName和getName方法的Method對象,并通過invoke方法調用了這兩個方法來設置和獲取屬性值。最后,我們打印了獲取到的屬性值。
請注意,反射機制是一種強大而靈活的技術,但也需要注意性能問題和潛在的安全風險。在實際開發中,應謹慎使用反射,以確保其正確性和可維護性。