Java的反射机制

Java的反射机制

反射机制获取类有三种方法

		//第一种方式:  
		Classc1 = Class.forName("Employee");  
		//第二种方式:  
		//java中每个类型都有class 属性.  
		Classc2 = Employee.class;  
		   
		//第三种方式:  
		//java语言中任何一个java对象都有getClass 方法  
		Employeee = new Employee();  
		Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)  

反射创建对象的方式

Java的反射机制

反射创建api

Java的反射机制

使用反射为类私有属性赋值

	// 为user对象私有属性赋值
		Class<?> classUser = Class.forName("com.itmayiedu.entity.User");
		// 获取到当前的所有属性
		Field[] fields = classUser.getDeclaredFields();
		for (Field field : fields) {
			System.out.println(field.getName());
		}
		// 获取当前所有的方法
		Method[] declaredMethods = classUser.getDeclaredMethods();
		for (Method method : declaredMethods) {
			System.out.println(method.getName());
		}
		// 初始化对象
		User user = (User) classUser.newInstance();
		Field declaredField = classUser.getDeclaredField("id");
		// 标记为true 允许反射赋值
		declaredField.setAccessible(true);
		declaredField.set(user, "20");
		System.out.println("使用反射机制给id赋值为:"+user.getId());

禁止使用反射机制初始化

将构造函数为私有化