反射
反射机制-在运行状态下,对于任意一个类,我们都能够得到这个类的所有方法和属性信息;对于任意一个对象,也可以去调用其属性和方法(class对象在java应用程序中代表一个类或者一个接口)
反射机制获取的信息:Field Constructor Method
获取class对象
Class cla = Student.class;(创建Student类)
一:获取构造函数
getDeclaredConstructors() 获取全部的构造函数
Constructor[] constructors = cla.getDeclaredConstructors();
for(Constructor c:constructors){
System.out.println©;
}
getConstructors() 获取public的构造函数
Constructor[] constructors1 = cla.getConstructors();
for(Constructor c:constructors1){
System.out.println©;
}
getDecalaredConstructor(Class…parametertype)
Constructor constructor = cla.getDeclaredConstructor(String.class,int.class);
构造当前对象
第一种调用Constructor的newlnstance
Student s = (Student)Constructor.newlnstance(“zhangsan”,19,“shannxi”);
第二种调用Class的newlnstance
Student s1 = (Student)cla.newlnstance();
第二种获取属性
getDeclaredFields 获取全部属性
Field[] fields = cla.getDeclaredFields();
for(Field f:fields1){
System.out.println(f);
}
getFields获取public属性
Field fields1 = cla.getFields();
for(Field f:fields1){
System.out.println(f);
}
getDeclaredField()获取某个指定的属性
Field field = cla.getDeclaredField(“name”);
field.setAccessible(true);
Student stu = (Student)cla.newlnstance();
field.set(stu,“tulun”);
第三种获取方法
getDeclaredMethods获取所有的方法
Method[] methods = cla.getDeclaredMethods();
System.out.println(“获取所有的方法”);
for(Method m: methods){
System.out.println(m);
}
getMethods 获取public的方法(包括从基类继承而来的)
Method[] methods1 = cla.getMethods();
System.out.println(“获取所有公有的方法”);
for(Method m:methods1){
System.out.println(m);
}
getDeclaredMethod() 获取某个指定的方法
System.out.println(“指定方法”);
Method method = cla.getDeclaredMethod(“eat”,String.class);
method.invoke(cla.newlnstance(),“beef”);
来源:CSDN
作者:小不点**
链接:https://blog.csdn.net/longdui123/article/details/104118895