- class 用来描述类本身
- Package 用来描述类所属的包
- Filed 用来描述类中的属性
- Method 用来描述类中的方法
- Construvtor 用来描述构造方法
-
Class
获取类的方法
Class clazz = Class.forName("包名.类名");Class clazz = 类名.classClass clazz = 对象.getClass()
- Class中常用的方法
int i = getModifiers()获取类的修饰符(权限 特征)String name = getName()获取全名String name = getSimpleName()获取简单名字Package p = clazz.getPackage()获取类所在的包Class pClazz = clazz.getSuperclass()获取父类Class[] interfaces = clazz.getInterfaces()获取类实现的接口Object obj = clazz.newInstance()创建对象
Filed
Filed filedName = clazz.getFiled("属性名")获取类的属性 需要知道属性名 属性必须是公有的FIled[] fileds = clazz.getFIleds()获取类的全部属性 包含继承过来的公有属性Filed f = clazz.getDeclaredFiled()获取类的私有属性Filed[] f = clazz.getDeclaredFiledS()获取类的全部私有属性- 如果需要修改私有元素需要
**f.setAccessible(true)**设置为true就可以修改
- 如果需要修改私有元素需要
int modifiers = filedName.getModifiters()获取属性的修饰符Class fClass = filedName.getType()获取属性的类型String name = filedName.getName()获取属性的名字filedName.set("要赋值的那个对象",值)给属性赋值,需要传递给那个对象的属性辅助filedName.get("对象")取值,要取那个对象的值
Method
Method m = clazz.getMethod("方法名",参数的类型类)获取方法(自己类+父类)Method m = clazz.getMethods("方法名",参数的类型类)获取所有的方法(自己类+父类)Method f = m.getDeclaredMethod()获取类的私有方法Method[] f = m.getDeclaredMethods()获取类的全部私有方法- 如果需要修改私有元素需要
**m.setAccessible(true)**设置为true就可以执行
- 如果需要修改私有元素需要
int modifiers = m.getModifiters()获取方法的修饰符Class mrt = m.getReturnType()获取返回值数据类型String mn = m.getName()获取方法的名字Class[] mpts = m.getParameterTypes()获取方法参数列表的类型Class[] mets = m.getExceptionTypes()获取方法抛出异常的类型Object obj = m.invoke(对象,[参数])执行方法构造方法Constructor
public class TestConstructor{public static void main(String[] args){try{Class clazz = Person.class;Constructor con == clazz.getConstructor(); // 获取构造方法 可有参数类型类Constructor[] cons == clazz.getConstructors();// 获取一组构造方法可有参数类型类Person p = (Person)con.newInstance(); // 执行构造方法int modifiers = m.getModifiters(); //获取方法的修饰符String mn = m.getName(); //获取方法的名字Class[] mpts = m.getParameterTypes(); //获取方法参数列表的类型Class[] mets = m.getExceptionTypes(); //获取方法抛出异常的类型}catch(Exception e){}}}
