zoukankan      html  css  js  c++  java
  • 反射随笔

    射:框架设计的灵魂
        框架:可在框架基础上进行软件开发,简化编码
        反射:将类的各个部分封装为其他对象

    好处:
        1.可以在程序运行过程中操作这些对象
        2.可以解耦,提高程序可扩展性

    获取class对象
        1.Class.forname("全类名"):将字节码文件加载进内存,返回Class对象
        2.类名.class:通过类名的属性class来获取
        3.对象.getclass():getclass()方法在object类中定义
        结论:同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取class对象都是同一个




    Class对象功能:
        1.获取功能:
            获取成员变量们
            Field[] getFields()    获取所有public修饰的成员变量
            field getField(String name)  获取指定名称的public修饰的成员变量
            Field[] getDeclareFields()获取所有成员变量
            field getDeclareField(String name)
            获取构造方法们
            Constructor<?> getConstructors()
            Constructor<T> getConstructor(类<?>...parameterTypes)
            Constructor<?> getDeclareConstructors()
            Constructor<T> getDeclareConstructor(类<?>...parameterTypes)
            获取成员方法们
            Method[] getMethods()
            Method[] getMethod(String name,类<?>...parameterTypes)
            Method[] getDeclareMethods()
            Method[] getDeclareMethod(String name,类<?>...parameterTypes)    
            获取类名
            String getName()


        Field:成员变量
        1.设置值
        set(Object obj,Object value)
        2.获取值
        get(Object obj)


        忽略访问权限修饰符的安全检查
        d.setAccessible(true) //暴力反射

        Constructor:构造方法
        创建对象
        newInstance()
        若使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance

        Method:方法对象
        执行方法:
            Object invoke(Object obj.....args)
        获取方法名称:
        String getName

  • 相关阅读:
    你喜欢使用eclipse+tomcat编程吗?!
    "ERR_GFX_D3D_INIT", GTA5-报错解决办法
    这样写JS的方式对吗?
    webui layout like desktop rich client
    2014年12月23日00:42:54——PS4
    2014年12月20日00:33:14-遮罩+进度条-extjs form.isvalid
    十分钟部署智能合约
    idea clion编译器
    parity 注记词
    go语言学习笔记
  • 原文地址:https://www.cnblogs.com/ashin1997/p/11355174.html
Copyright © 2011-2022 走看看