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

  • 相关阅读:
    dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
    web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)
    crontab的安装及crontab命令介绍
    开启Nginx的gzip压缩功能详解
    nginx限制请求之四:目录进行IP限制
    nginx上传目录配置,禁止执行权限
    EhCache 分布式缓存/缓存集群
    Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解
    CDN模式介绍
    IT基础架构规划方案一(网络系统规划)
  • 原文地址:https://www.cnblogs.com/ashin1997/p/11355174.html
Copyright © 2011-2022 走看看