怀宁县新闻网,人蛇偷渡,灰灰先生
动态获取信息以及动态调用对象方法的一种反射机制。可以在程序运行时动态的获取类的属性、方法和构造器。
可以动态的创建对象,不需要导入类的所在包,只需要知道类的完整路径就可以知道该类中的所有信息。
class.forname("路径");
对象名.getclass();
类名.class;
注意:一个类只有一个类对象。
system.out.println("获取类对象的包名:" + c.getpackage()); system.out.println("获取类的修饰符:" + c.getmodifiers()); system.out.println("获取类的名称(全限定):" + c.getname()); system.out.println("获取类的名称(类名):" + c.getsimplename()); system.out.println("获取类的父类的类对象:" + c.getsuperclass());
// 获取该类及其所有父类的所有公共字段 field[] fields = c.getfields(); for(field f : fields) { system.out.println("获取属性名:" + f.getname()); system.out.println("获取修饰符" + f.getmodifiers()); system.out.println("获取类型" + f.gettype()); //返回的是类型的class对象 }
// 获取该类声明的所有字段 field[] fieldall = c.getdeclaredfields(); for(field f : fieldall) { system.out.println("获取属性名:" + f.getname()); system.out.println("获取修饰符" + f.getmodifiers()); system.out.println("获取类型" + f.gettype()); //返回的是类型的class对象 }
// 指定获取类及其父类的公共字段 field field = c.getfield("pname"); // 指定获取类的所有字段 field field2 = c.getdeclaredfield("snull"); // 指定获取父类声明字段 field field3 = c.getsuperclass().getdeclaredfield("pname");
// 操作静态属性 类属性对象.get(null) // 返回静态属性的值 类属性对象.set(null,"值") // 赋值 // 操作非静态属性 类属性对象.get(object obj); 类属性对象.set(object obj,"值");
// 获取所有的公共方法(包括父类) method[] methods = c.getmethods(); for(method method:methods) { system.out.println(method.getname()); }
// 获取所有声明的方法(不包括父类) method[] methodall= c.getdeclaredmethods(); for(method method:methodall) { system.out.println(method.getname()); }
// 获取指定的公共方法 getmethod(string name, class ... cla); // 获取指定的方法 getdeclaredmethod(string name,class ... cla); /** 参数 * string : name 表示方法名 * class ... cla 表示方法接收的参数类型的类对象 * */
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论