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

    1.反射机制是什么

         反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;

         这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    2.反射机制能做什么在运行时判断任意一个对象所属的类;

      2.1在运行时构造任意一个类的对象;

      2.2在运行时判断任意一个类所具有的成员变量和方法;

      2.3在运行时调用任意一个对象的方法;

      2.4生成动态代理

    3.反射应该怎么用

        3.1首先要先获取到一个类的基类

    object.getClass()

    每个对象都有此方法

    获取指定实例对象的Class

    List list = new ArrayList();

    Class listClass = list.getClass();

    class. getSuperclass()

    获取当前Class的继承类Class

    List list = new ArrayList();

    Class listClass = list.getClass();

    Class superClass = listClass. getSuperclass();

    Object.class

    .class直接获取

    Class listClass = ArrayList.class;

    Class.forName(类名)

    用Class的静态方法,传入类的全称即可

    try {

    Class c = Class.forName("java.util.ArrayList");

    } catch (ClassNotFoundException e) {

    e.printStackTrace();

    }

    Primitive.TYPE

    基本数据类型的封装类获取Class的方式

    Class longClass = Long.TYPE;

    Class integerClass = Integer.TYPE;

    Class voidClass = Void.TYPE;

    3.2 java反射为我们提供了四大对象用来访问java类中的属性方法构造和动态创建数组

        Field 类:代表类的成员变量(也称类的属性)
        Method类:代表类的方法
        Constructor 类:代表类的构造方法
        Array类:提供了动态创建数组,以及访问数组的元素的静态方法

         3.2.1FieId类

          public Field getDeclaredField(String name)  获取任意指定名字的成员

            public Field[] getDeclaredFields()             获取所有的成员变量

               public Field getField(String name)           获取任意public成员变量  

               public Field[] getFields()                          获取所有的public成员变量

     3.2.2Method类

       public Method[] getMethods()    获取所有的共有方法的集合

       public Method getMethod(String name,Class<?>... parameterTypes) 获取指定公有方法 参数1:方法名 参数2:参数类型集合 

       public Method[] getDeclaredMethods()  获取所有的方法

       public Method getDeclaredMethod(String name,Class<?>... parameterTypes) 获取任意指定方法

     

  • 相关阅读:
    SQL Functions
    wse 3.0
    mvc2 在 .net 4 下的ValidateInput(false) 无效
    FF3.0 不可以post空
    也谈.NET MVC 2 + ExtJS的部署问题
    ExtJs懒人笔记(2) ExtJs页面布局
    关于算法—— 一维字符串数组之间组合问题的C#实现
    (转)在ASP.NET 中实现单点登录(利用Cache, 将用户信息保存在服务器缓存中)
    XML中配置正则表达式的写法
    .NET MVC 下实现消息推送
  • 原文地址:https://www.cnblogs.com/wy0119/p/7653365.html
Copyright © 2011-2022 走看看