讲师笔记,Java基础学习之路之day24——反射

反射 reflection
    在运行时加载一个指定名称的class文件 并且产生Class对象
    通过Class对象 获取类的信息 (方法 属性 构造方法等)并且使用
    
    class String{} --Class对象
    class Person{ --Class对象
        public String name;
        int age;
        public void a(){}
        public void a(int a,String name){}
    }
    
    抽象类的类
    public class Class{
        int modifer;//修饰符
        Field[] fields;//属性
        Method[] methods;//方法
        Constructor[] constructors;//构造方法
        String name;//类名
        Class superClass;//父类
        Package package;//当前类所在的包
        Class[] interface;//当前类实现的接口
        
        //获取所有属性
        Field[] getFields(){}
        //根据属性名称  获取某个属性
        Field getField(String name){}
        //获取所有方法
        Method[] getMethods(){}
        //获取某个方法
        Method getMethod(String name,Class...parameterType){}
        //获取构造方法
        Constructor[] getConstructors(){}
        //获取某个构造方法
        Constructor getConstructor(Class... parameterType){}
        //获取类名
        String getName(){}
        //获取父类
        Class getSuperClass(){}.......
        
    }
    
    class Field{
        int modifier;//修饰符
        String name;//属性名
        Class returnType;//返回值类型
        
        //获取obj这个对象的属性值
        Object get(Object obj){}
        
        //为obj对象的属性 设置值 为value
        set(Object obj,Object value){}
        
    }
    class Method{
        int modifier;//修饰符
        String name;//方法名
        Class returnType;//返回值类型
        Class[] parameterTypes;//参数列表
        Class[] exceptionTypes;//异常类型
        
        //执行obj对象的方法
        Object invoke(Object obj,Object... parameters){}
    }
    
    
    -------------------------------------------------
    
  ***获取Class对象:
    方法一:Class.forName("包名.类名") 有异常要处理ClassNotFoundException
    方法二:类名.class
    方法三:对象.getClass()
    
    static final修饰的东西 反射 不能修改
    
    掌握:
        如何获取Class对象
        如何利用反射创建对象
        如何访问属性 给属性赋值 获取属性值
        如何访问方法 执行方法
        如何利用反射创建数组
    --------------------------------------------------
    
    工厂模式  本质是利用工厂创建对象
        将一个类的创建 交给 另一个类来做
        
        A类 中 要创建 B类的对象
        A类自己不创建B类的对象
            而是将创建的过程 交给C类(B类的工厂类)去实现
    
    ----------------------------------------------------
    
    作业:
    1.ObjectFactory代码
    2.定义一个方法,实现对任意一个对象的任意属性赋值
        obj:任意对象
        name:属性名
        value: 属性值
        public static void setValue(Object obj,String name,Object value){}
    
    3.定义一个方法 利用反射打印出某个对象中所有以get开头的public修饰的方法名
        public print(Object obj){}
    
    ----------------------------------------------------
    注解
    线程

猜你喜欢

转载自blog.csdn.net/u011189148/article/details/81417218