JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。
关于反射的四种方式:
public void test() throws Exception {
/** 第一种反射方式 */
Class clazz1 = new Student().getClass();
/** 第二种反射方式 */
Class clazz2 = Student.class;
/** 第三种反射方式 */
// 先声明 xxx 类所在包的完整名
String className = "com.test.Student";
Class clazz3 = Class.forName(className);
/** 第四种反射方式 */
Class clazz4 = this.getClass().getClassLoader().loadClass(className);
}
获取类中的变量,并进行赋值:
@Test
public void test() throws Exception {
Class clazz = Student.class;
Student student = (Student) clazz.newInstance();
/** 声明为 public 类型的变量可以这样获取 **/
Field field1 = clazz.getField("stuNo");
field1.set(student, "01");
System.out.println(student);
/** 其他类型变量只能通过如下获取 **/
Field field2 = clazz.getDeclaredField("stuName");
field2.setAccessible(true);
field2.set(student, "张三");
System.out.println(student);
}