创建反射的三种方式;
1.Class c1=Username.class ; //找到位置
2.Class c2=use.getClass(); //找到当前类位置
3.Class c3 = Class.forName("class Demo.java3.反射.Username");//通过全名找到位置
4.ClassLoader loa = Username.class.getClassLoader(); //获取此类的类加载器
Class c4=loa.loadClass("class Demo.java3.反射.Username");
获取所有属性的类型以及修饰符:
1.Field[] fields = c1.getFields();//获取所有的public属性(继承了父类还会找父类的所有属性)
2.Field[] fields1 = c1.getDeclaredFields();//返回该类的所有属性(包括private属性的) 但不包含父类的属性
权限修饰符.数据.类型:
Field[] fields = clazz.getDeclaredFields(); //返回该类的所有属性(包括private属性的) 但不包含父类的属性
for(Field f:fields){ //for循环
int i = f.getModifiers(); //输出0,1,2,3,4这样子的 //权限修饰符
String s = Modifier.toString(i);转换回来成普通类型的 //private public
Class type=f.getType() //数据类型
String name = f.getName(); //返回: name,age,id 变量名称
}
获取所有方法名:
Method[] methods1 = c1.getDeclaredMethods();//返回所在类的方法(所有权限的方法) 和类名称
获取:@注解 权限修饰符.方法名(参数类型1,形参名1).返回值类型
Method[] methods = c1.getDeclaredMethods();//返回所在类的方法(所有权限的方法)