JAVA基础笔记(十五)反射

反射:
    通过对象找到对象的原始数据;
    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();














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值