zoukankan      html  css  js  c++  java
  • 反射小结

    反射

    1在java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,
    对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为
    java语言的反射机制。

    java反射可以实现的功能
    在运行时判断任意一个对象所属的类
    在运行时构造任意一个类的对象
    在运行时判断任意一个类所具有的方法和属性
    在运行时调用任意一个对象的方法
    生成动态代理
    java程序中许多对象在运行时都会出现两种类型:(编译时类型)和(运行时类型)
    编译时的类型由声明该对象时使用的类型决定,运行时类型由实际赋给该对象的类型
    决定。如:Person p=new Student();
    此时p的编译时类型为Person,运行时类型为Student

    如果编译时根本无法预知该对象和类可能属于哪些类,程序只依靠运行时信息来发现
    该对象和类的真实信息,此时就必须使用(反射)

    java反射API介绍

    Class类 反射的核心类,可以获取类的属性,方法等内容信息

    下面3个类都在 java.lang.reflect包中
    Field类 表示类的属性,可以获取和设置类中属性的值

    Method类 表示类的方法,可以获取类中方法的信息,或者执行方法

    Constructor类 表示类的构造方法

    每个类被加载后,系统会为该类生成一个对应的Class对象,
    通过该Class对象可以访问java虚拟机中的这个类,java程序中获得
    Class对象通常有以下3种方式:

    1 调用某个对象的getClass()方法
    Peson p=new Person();
    Class cla=p.getClass();

    2调用某个类的class属性来获取该类对应的Class对象
    Class cla=Person.class;
    (需要在编译时就知道该类的名字)
    (代码更安全,程序性能更高,此方法比较常用)

    3使用Class类的forName((“类的全名”))静态方法
    Class cla=Class。forName(“person”)错误的xx

    Class cla=Class.forName("com.pb.jdbv.reflection.Person");正确

     

     

     

     

     

     

     

     

  • 相关阅读:
    分清抽象类和接口的区别
    【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
    Android多线程----异步消息处理机制之Handler详解
    Android中关于Handler的若干思考
    Axure Base 09 带遮罩层的弹出框
    Axure Base 08 动态面板的用途
    Axure Base 07 元件使用思路的补充
    Axure Base 03
    Axure Base 02
    Axure Base 01
  • 原文地址:https://www.cnblogs.com/chenleixing-2017/p/7649482.html
Copyright © 2011-2022 走看看