反射:框架设计灵魂

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

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

   好处:

     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修饰的成员变量

      FieId[ ] getDeclaredFieIds()获取所有成员变量,不考虑修饰符

      FileId getDeclaredFieId(String name);

    2.获取构造方法们:

        Constructor<?>[ ] getConstructors()

      Constructor<T> getConstructor(类<?>… parameterTypes)

     Constructor<T> getDeclaredConstructor(类<?>… parameterTypes)

        Constructor<?>[ ] getDeclaredConstructors();

    3.获取成员方法们

         Method[ ] getMethod()

      Method getMethod(String name,类<?>… parameterType)

         Method[ ] getDeclaredMethod()

       Method getDeclaredMethod(String name,类<?>… parameterType)

     4.获取类名

      String getNmae();

       Field:成员变量

       操作:

        1.设置值

        void set(Object obj,Object value);

        2.获取值

         get(Object obj)

        3.忽略访问权限修饰符的安全检查

        setAccessible(true):暴力反射

        Constructor:构造方法

        创建对象:

        newInstance(Object… initargs)

如果使用空参数构造方法创建对象,操作可以简化Class对象的newInstance方法

java反射原理及Class应用的更多相关文章

  1. JAVA反射原理

    什么是反射? 反射,一种计算机处理方式.是程序可以访问.检测和修改它本身状态或行为的一种能力.java反射使得我们可以在程序运行时动态加载一个类,动态获取类的基本信息和定义的方法,构造函数,域等.除了 ...

  2. [转]Java Spring的Ioc控制反转Java反射原理

    转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc ...

  3. JAVA反射原理解读

    一.什么是JAVA的反射 1.在运行状态中,对于任意一个类,都能够知道这个类的属性和方法. 2.对于任意一个对象,都能够调用它的任何方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称为JAV ...

  4. 深入理解java反射原理

    反射是java的一个特性,这一特性也使得它给了广大的第三方框架和开发过者很大的想像空间. 通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,从而使代码更灵活!可以极大地提 ...

  5. 【反射】利用java反射原理将xml文件中的字段封装成对应的Bean

    本例使用的xml解析方式为jdom ... <ROOT> <Consignment> ... </Consignment> </ROOT> 解析xml文 ...

  6. java 反射原理写了一个赋值和取值通用类

    首先了解一下反射的原理,什么是反射?所谓的反射就是指java 语言在运行时拥有一项自观的能力,反射能使你得到装载到 jvm 中的类的内部信息,它不需要你在编码的时候就知道所需类的内部信息,允许程序执行 ...

  7. java反射原理运用

    1.首先用Java反射机制的要做到的一个目的:我们都知道通过得到一个对象中的指定方法或者属性等,基于这个原理我们来做一个 通用的功能,让客户端可以通过传入的对象和一个标识去调用这个对象里自己想要的方法 ...

  8. java反射原理,应用

    java类的加载过程 调用java命令运行程序时,该命令会启动一条java虚拟机进程,该程序的所有线程都会运行在这个虚拟机进程里面.程序运行产生的线程.变量都处于这个进程,共同使用该JVM进程的内存区 ...

  9. Java 反射原理

    一.Java 反射的定义 反射机制是在运行状态中, 对于任意一个类, 都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法或者属性: 二.反射提供的功能: 在运行时判断任意 ...

  10. Java反射原理和实际用法

    背景 反射在Java中非常重要,是Java区别于其他编程语言的一大特性.Java中的AOP切面.动态代理等看起来像黑魔法一样的技术,就离不开反射.字节码等.这些技术能在不侵入原有代码的情况下,做一些增 ...

随机推荐

  1. vmware vSphere Data Protection 6.1 使用备份、恢复、报告

    一.6个选项卡说明 1.getting started 开始,提供VDP功能概述以及指向创建备份作业向导.恢复向导.报告选项卡的快速连接 2.backup 提供已计划备份作业的列表以及有关备份作业的详 ...

  2. Scala 学习之路(十二)—— 类型参数

    一.泛型 Scala支持类型参数化,使得我们能够编写泛型程序. 1.1 泛型类 Java中使用<>符号来包含定义的类型参数,Scala则使用[]. class Pair[T, S](val ...

  3. 第二章: Identifiers, Keywords and Types

    一:方法的定义和方法的调用 方法的定义:修饰符 方法的返回值 方法名(参数列表){ 方法体 } 如果没有方法的返回值就写成:void 参数列表:参数类型 参数名 方法的调用:方法名(参数值) 第二天: ...

  4. 【Idea】JUnit单元测试%MODULE_WORKING_DIR%' does not exist

    Idea执行单元测试时报错:上午9:35 Error running 'MobileMessageImplTest.java': Cannot start process, the working d ...

  5. 8天入门docker系列 —— 第六天 搭建自己的私有镜像仓库Registry

    这一篇我们来聊聊私有仓库的搭建,其实不管你是通过docker build还是compose的方式进行构建,最终还是要将生成好的镜像push到远程的仓库中,这样多个 平台可以方便的获取你registry ...

  6. C# 死锁 TaskCompletionSource

    在异步转同步时,使用不当容易造成死锁(程序卡死) 看如下案例: 有一个异步方法 private static async Task TestAsync() { Debug.WriteLine(&quo ...

  7. python数据分析与挖掘实战

    <python数据分析与挖掘实战>PDF&源代码&张良均 下载:链接:https://pan.baidu.com/s/1TYb3WZOU0R5VbSbH6JfQXw提取码: ...

  8. 小白开学Asp.Net Core 《七》

    小白开学Asp.Net Core <七> — — 探究中间件(MiddleWare) 1.何为中间件? 中间件是组装到应用程序管道中以处理请求和响应的家伙,管道中的每个组件都要满足以下两个 ...

  9. 2050编程赛 冰水挑战 HDU 6495

    题目地址:https://vjudge.net/problem/HDU-6495 思路:我们需要维护的是挑战了n个之后剩余体力值,剩余体力值越大越好dp[N(i)][N(j)],第一个维度,记录当前是 ...

  10. Python选修第00次作业:缘分

    先说一说我与Python的缘分吧.初识Python,是在高三上学期.从那位同学那里经过时,看到了他桌子上的一本书——<和小卡特一起学Python>,封面就很吸引人,便买来一本,累了不想做题 ...