Java中的反射

java 反射机制:

        是指在运行时获取一个类的变量和方法信息,然后通过获取到的信息来创建对象,调用方法的一种2.2获取Class类的对象 2.2获取类类的对象。

通过反射,获class类型的对象的三种方法。

方法一.使用类的class属性来获取该类对应的Class对象。

例如:Student.class将会返回Student类对应的class对象

Class  c1 = Student.class;

方法二. 调用对象的getClass(方法,返回该对象所属类对应的Class对象

Student s = new Student();
class c3 =s.getClass();

方法三. 使用Class类中的静态方法forName(StringclassName),该方法需要传入字符串参数,该字符串参数的值是某个类的全路径,也就是完整包名的路径

Class  c4 = Class.forName("路径");

Class类中获取构造方法

Constructor用于创建对象的方法

对象名.newInstance(Object ... initargs):根据指定的构造方法创建对象 

Method m  = c.getConstructor("方法名");//返回一个无参的方法
	// 获取无参构造方法创建对象
	Constructor con = c.getConstructor(); 
	Object  obj = con.newInstance();
	 m.invoke(obj); //调用该对象的m方法

反射获取成员变量并赋值

Java中的反射_第1张图片

 field类中用于给成员变量赋值的方法

如果成员变量是私有属性时,使用setAccessible(true);取消访问检查 

		Field nameField = c.getDeclaredField("name");
		nameField.setAccessible(true);//取消访问权限检查
		nameField.set(obj, "张三");//给变量name 赋值
		System.out.println(obj);//输出变量name

void  set(obj,Objectvalue);给obj对象的成员变量赋值

name.set(obj,"张三")

有一个Arrylist 集合,在集合中添加字符串

ArrayList array = new ArrayList();
	Class c = array.getClass();
	Method m = c.getMethod("add",Object.class);//获得add方法
	m.invoke(array, "hello");
	m.invoke(array, "hello");	
	m.invoke(array, "hello");
	System.out.println(array);

你可能感兴趣的:(java,开发语言)