java 反射零碎笔记

1.获得类类型 3中方法:

(1)Class.forName("完整包名.类名");

(2) 类名.class 

(3)  对象.getClass

2.用类类型实例化变量:

  (强转目标类)类类型.newInstance()

eg: Class<?> clazz = Class.forName("com.wuhx.Teacher");

     Teacher tc = clazz.newInstance();

学习代码笔记:

/**
	 * 
	 * @param obj 任意对象
	 * @throws Exception
	 */
	public static void learnReflect(Object obj) throws Exception{
		/*=========================获取类字段===============================
		Field[] field = obj.getClass().getDeclaredFields();
		for(int i=0; i<field.length; i++){
			
			String priv = Modifier.toString(field[i].getModifiers()); //字段修饰符
			String name = field[i].getName();                         //字段类型
			String type = field[i].getType().getName();               //字段名称
			System.out.println(priv+" "+type+ " "+name);
		}*/
		/*=========================调用方法===============================
		Method method = obj.getClass().getMethod("sayHello",String.class);
		method.invoke(obj,"wuhx");*/
		/*=========================获取/设置字段值===============================
		Field f = obj.getClass().getDeclaredField("teaName");//假设我们知道参数对象obj 有这个字段
		f.setAccessible(true); // 否则无法访问private 修饰属性
		String fValue = (String) f.get(obj);
		System.out.println("teaName: "+fValue);
		
		f.set(obj, "王老师他爸");
		fValue = (String) f.get(obj);
		System.out.println("teaName: "+fValue);*/
	}

 

 

你可能感兴趣的:(java反射)