JAVA基础笔记(十五)反射

来源:互联网 发布:windows phone 输入法 编辑:程序博客网 时间:2024/04/30 16:28
反射:    通过对象找到对象的原始数据;    Class类是所有反射类的源头;Java里对于Class类有三种实例化模式:    1,getClass(),所有的实例化对象都具备此操作,必须要实例化对象才可以或得Class累的对象;    2,类.class:取得类对象;不需要对象实例化;    3public static Class<?>forName(String className)方法获取该Class类Class类里的方法:    代替new实例化对象    1、public T newInstance() throws InstantiationException,IllegalAccessException.两种实例化方式:    1、Class<?> cls = Class.forName("包.类");    2、Class<Phone> cls = Phone.class;实例化:    Phone p = (Phone)cls.newInstance();//第一种方式对象需要强转型但是可以操作properties文件.    Phone p = cls.newInstance();    //第二种方式实例化对象不需要转型;当一个类的非反射Class类对象之后就可以取得类的所有信息,在Class类中的方法:    1、取得完整类名称:public String getName();    2、取得类名称:public String getSimpleName();    3、取得父类Class对象:public Class<? super T>getSuperclass();    4、取得所有实现的接口信息:public Class<?>[]getInstances();反射操作构造方法:    Class类中提供了与构造方法有关的方法:    取得全部构造:public Constructor<?>[] getConstructors()     取得指定构造,并且设置参数类型:public Constructor<T> getConstructor(Class<?>...parameterTypes)    两个方法都会返回有一个Java.lang.Constructor类的实例化对象;反射调用普通方法:    第一组操作:取得所有的方法,包括继承来的方法;        取得所有方法:public Method[]getMethods        取得第一个方法:public Method getMethod(String name,Class<?> ...parameterTypes)    第二组操作:取得本类定义的方法,不关心继承方法;        取得所有方法:public MEthod[] getDelaredMethods()        取得第一个方法:public Method get DeclareMethod(String name,Class<?>...parameterTypes)在Method类中有一个重要的方法,此方法指的是放射调用类方法;    ·执行方法体:public Object invoke(Objkect obj,Object ...args)在此方法之中需要传入一个要调用此方法的实例化对象,调用时传入所需要的参数;成员:Field,反射调用成员变量    第一组:取得继承来的成员:        取得全部成员:public Field[] getFields();        取得一个成员:public Field[] getFields(String name);    第二组:取得本类成员:        取得全部成员:public Field getDeclaredFields();        取得单个成员:public Field getDeclaredFiled(String name);设置成员内容:public void set(Objecy obj,Object value)取得成员内容:public void setAccessible(Object obj)设置封装:public void setAccessible(boolean flag)设置成员之前要先取消封装:setAccessible(true);类加载器classLoader:    取得类加载器:public ClassLoader getClassLoader();
0 0
原创粉丝点击