首页 > 其他分享 >反射

反射

时间:2022-12-23 22:24:42浏览次数:31  
标签:反射 获取 对象 Object Field Class 类名

反射:框架设计的灵魂

  *框架:半成品软件。可以在框架的基础上进行软件的开发,简化编码。

  *反射:将类的各个组成部分封装为其他对象,这就是反射机制。

 

  *好处: 

    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)

          获取到的成员变量:

            *操作:

               1.设置值:void set(Object obj,Object value)

               2.获取值:get(Object obj)

               3.忽略访问权限修饰符的安全检查  //主要用于获取对象为私有

                   setAccessible(true):暴力反射

       2.获取构造方法们

      Constructor:构造方法

        *创建对象:

            *T newInstance(Object... initargs)

               空参构造简化操作:Class的newInstance方法

       3.获取成员方法们

        Method:方法对象

           *执行方法:

              Object invoke(Object obj,Object... args)

           *获取方法名称

              String getName:获取方法名

       4.获取类名

标签:反射,获取,对象,Object,Field,Class,类名
From: https://www.cnblogs.com/lin513/p/17001738.html

相关文章

  • 重学c#系列—— 反射深入一点点[三十三]
    前言在上一章中介绍了什么是反射:https://www.cnblogs.com/aoximin/p/16440966.html正文上一节讲述反射的基本原理和为什么要用反射,还用反射的优缺点这些。其二者的......
  • java反射--PropertyDescriptor类:(属性描述器)、Introspector类
    博客后台-博客园(cnblogs.com)packagecom.peidasoft.instrospector;importjava.beans.BeanInfo;importjava.beans.Introspector;importjava.beans.Prop......
  • 重学c#系列—— 反射的基本理解[三十三]
    前言在上一章中介绍了什么是反射:https://www.cnblogs.com/aoximin/p/16440966.html正文上一节讲述反射的基本原理和为什么要用反射,还用反射的优缺点这些。其二者的......
  • 反射 指针 字符串
     func largestMerge(s, t string) string {    n := len(s)    sa := *(*[]int32)(unsafe.Pointer(reflect.ValueOf(suffixarray.New([]byte(s + ......
  • 反射和对象序列化浅谈
    反射c++本身是没有反射机制的。反射是什么?我认为是运行时对象信息库,反射就是在需要获取对象信息的时候使用,在做类型转换的时候使用,获取对象实例的时候使用...统一一下就是......
  • Java反射调用get/set方法,你还在这样用?
    之前有些场景下碰到需要用到反射调用JavaBean的get/set方法时都是像以下这种拼接的方式来实现方法的调用。Articlearticle=newArticle();article.se......
  • 反射 1 加载指定的DLL
    我们通常都是用反射来操作指定的程序集(dll,exe)、需要引用System.Reflection有三种加载方式Assemblyassembly=Assembly.Load("ReflectionBLL");//dll的强名称(包括......
  • C# 反射以及实际场景使用
    1什么是反射首先要复习一下C#的编译过程,可以解释为下图其中dll/exe中,包括元数据(metadata)和IL(中间语言IntermediateLanguage)另外还出现的其他名词:CLR(公共语言运......
  • 反射
    反射反射机制基本介绍反射机制允许程序在执行期借助子ReflectionAPI取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法加载完类之后......
  • 【Java面试指北】反射(1) 初识反射
    如果你被问到:什么是反射?为什么需要反射、以及反射的应用?你会如何回答呢?本篇会带大家初识反射,了解反射概念和基本应用。反射的原理以及深入源码的探究将会在后面几篇介绍。......