学习任务:

视频学习

动手测试反射静态方法

如下使用反射调用下边的方法:

// 选课列表
private static PbCourse[] selections;

//设置选课列表
public static void setSelections(PbCourse[] courseList) {
	PbStudent.selections = courseList;
}
//获取选课列表
public static PbCourse[] getSelections() {
	return PbStudent.selections;
}

测试代码如下:

	//通过反射调用静态方法
	public static void test4() throws Exception {
		PbStudentVip pbStudentVip = new PbStudentVip(101L, "攀博", "1759102882@qq.com");
		//获取父类的Class对象
		Class class1 = pbStudentVip.getClass().getSuperclass();
		//获取本类的public方法 
		Method method1 = class1.getMethod("setSelections", PbCourse[].class);
		Method method2 = class1.getMethod("getSelections", null);
		//调用setSelections方法
		PbCourse[] courseListCourses = new PbCourse[] {new PbCourse(10L, "攀博课堂SpringCloud实战",50)};
		//调用静态方法第一个参数调为null
		//注意:由于第二个参数是变长参数(一维数组),当方法的参数有数组时需要使用Object[]进行包装
		method1.invoke(null, new Object[] {courseListCourses});
		//调用getSelections方法,第一个参数设置为null
		PbCourse[] selections = (PbCourse[]) method2.invoke(null, null);
		for (int i = 0; i < selections.length; i++) {
			System.out.println(selections[i]);
		}
		
	}

输出:

PbCourse [id=10, courseName=攀博课堂SpringCloud实战, price=50.0]

通过测试 发现,当方法参数有数组时需要使用Object[]进行包装。

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题