1.什么是反射
Java中反射的意思是是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
2.如何得到反射对象
为了演示我这里创建个一个学生的实体类,其中封装了属性,创建了构造函数,还有个测试类
//1.通过类名获取要反射的对象
Class stu = Student.class;
System.out.println("通过类名获取要反射的对象"+stu);
//2.使用new对象获取要反射的对象
Class stu2 = new Student().getClass();
System.out.println("使用new对象获取要反射的对象"+stu2);
//3.通过路径获取要反射对象
Class stu3 = Class.forName("com.reflectionuse.Student");
System.out.println("通过路径获取要反射对象"+stu3);
//输出类的昵称
System.out.println("类的昵称"+stu.getSimpleName());
这样我们就得到了反射对象,为了一些不必要的麻烦最好创建一个无参构造函数
//获取反射对象的修饰符,Final等
int mod = stu.getModifiers();
if(Modifier.isFinal(mod)){
System.out.println("Final是");
}else{
System.out.println("Final否");
}
if(Modifier.isPublic(mod)){
System.out.println("Public是");
}else{
System.out.println("Public否");
}
运行结果:
getModifiers它返回的是int类型的,可以对照一下
我们可以按住CTRL点击Modifier进源码看一下返回的是boolean类型的,还有很多这里就不多介绍了大家可以自己去研究一下
Constructor[] con = stu.getConstructors();
for (Constructor str : con) {
//注意这里是获取带参构造函数中参数类型
Class[] parameter = str.getParameterTypes();
for (Class c : parameter) {
System.out.println("参数类型为"+c.getSimpleName());//获取参数类型
}
}
运行结果:
还有许多这里没有讲到,有时间大家可以自己去试一下,谢谢观看!