zoukankan      html  css  js  c++  java
  • java 反射机制

    能够分析类能力的程序称为反射,反射机制的功能极其强大,反射机制可以用来:

    1 在运行中分析类的能力

    2 在运行中查看对象

    3 实现通用的数组操作代码

    4 利用Method对象,这个对象很想C++中的函数指针

    反射的常用类和函数:Java反射机制的实现要借助于4个类:Class,Constructor,Field,Method;


    其中class代表的是类对象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象,通过这四个对象我们可以粗略的看到一个类的各个组成部分。其中最核心的就是Class类,它是实现反射的基础,它包含的方法我们在第一部分已经进行了基本的阐述。应用反射时我们最关心的一般是一个类的构造器、属性和方法,下面我们主要介绍Class类中针对这三个元素的方法:


    1、得到构造器的方法

    Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,  
    Constructor[] getConstructors() -- 获得类的所有公共构造函数 
    Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关) 
    Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关) 

    2、获得字段信息的方法

    Field getField(String name) -- 获得命名的公共字段 
    Field[] getFields() -- 获得类的所有公共字段  
    Field getDeclaredField(String name) -- 获得类声明的命名的字段  
    Field[] getDeclaredFields() -- 获得类声明的所有字段 

    3、获得方法信息的方法

    Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法  
    Method[] getMethods() -- 获得类的所有公共方法  
    Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法  
    Method[] getDeclaredMethods() -- 获得类声明的所有方法 
    

    在程序开发中使用反射并结合属性文件,可以达到程序代码与配置文件相分离的目的

    如果我们想要得到对象的信息,一般需要“引入需要的‘包.类’的名称——通过new实例化——取得实例化对象”这样的过程。使用反射就可以变成“实例化对象——getClass()方法——得到完整的‘包.类’名称”这样的过程。

    正常方法是通过一个类创建对象,反射方法就是通过一个对象找到一个类的信息。



     


    链接:https://www.zhihu.com/question/24304289/answer/76541818
     
  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/sMKing/p/6632367.html
Copyright © 2011-2022 走看看