zoukankan      html  css  js  c++  java
  • Java反射机制的使用方法



    Java的反射机制同意你在程序执行的过程中获取类定义的细节。有时候在程序执行的时候才得知要调用哪个方法,这时候反射机制就派上用场了。




    获取类

    类的获取方法有下面几种:

    •    forName()。通过Class.forName()获取与字符串向相应的类。

      比方lstinline{Class.forName("java.lang.String");}。

    •    getClass()。每一个对象都有这种方法。比方lstinline{Foo foo; ...; foo.getClass();}。
    •    类名.class。直接通过类名获取这个类的反射对象。比方String.class。
    •    基本类型的类。

      比方Integer.TYPE。

      这样的方法与Integer.class是由差别的。一个是基本类型(Primitive type)。一个是复合类型(Composition)。


    获取构造函数

    获取构造函数由下面几种方法:

    •    getConstructor(Class[] params)。获取公共的构造函数。

    •    getConstructors()
    •    getDeclaredConstructor(Class[] params)。获取全部构造函数。
    •    getDeclaredConstructors()


    获取构造函数之后能够通过newInstance生成一个新的实例。


    获取字段

    获取字段的方法有下面几种:
    •    getField(String name)。获取公共的字段。
    •    getFields()。

    •    getDeclaredField(String name)。获取全部的字段。
    •    getDeclaredFields()

    获取字段之后能够通过getDouble getInt等方法获取变量的值。也能够通过setDouble setInt等方法给变量赋值。


    获取成员方法

    获取方法的方法有下面几种:

    •    getMethod(String name, Class[] params)。获取公共的方法。

    •    getMethods()
    •    getDeclaredMethod(String name, Class[] params)。

      获取全部的方法。

    •    getDeclaredMethods()


    获取成员方法之后能够调用invoke方法运行该方法。


    数组


    数组也是一个特殊的类型,因此Java中提供了java.lang.reflect.Array实现数组的动态操作。创建一个数组能够调用newInstance(type, count)方法,获取一个元素能够通过get(array, index)。
  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5123947.html
Copyright © 2011-2022 走看看