• 【译】3. Java反射——构造函数


    原文地址:http://tutorials.jenkov.com/java-reflection/constructors.html

    =====================================================================================================

         使用Java反射,你可以在运行时检查类的构造函数和实例化对象。这是通过Java类java.lang.reflect.Constructor做的。本文将会更详细的介绍Java中的Constructor对象。下面是所涵盖的主题列表:

    1. Obtaining Constructor Objects (获取Constructor对象)
    2. Constructor Parameters (Constructor的参数)
    3. Instantiating Objects using Constructor Object (通过Constructor对象实例化对象)

    =====================================================================================================

    • Obtaining Constructor Objects

         Constructor对象可以从Class对象中获取。下面是一个例子:

    Class aClass = ...//obtain class object
    Constructor[] constructors = aClass.getConstructors();

         数组Constructor[ ]将会存储在类中所有声明为public的构造函数的Constructor实例。
         如果你知道你要访问的构造函数的精确参数类型,你可以这样做而不是获取所有的构造函数。这个例子返回给定类的一个public的且接收一个String类型的变量作为参数的构造函数:

    Class aClass = ...//obtain class object
    Constructor constructor = aClass.getConstructor(new Class[]{String.class});

         如果没有和给定的参数相匹配的构造函数,会抛出NoSuchMethodException异常。

    =====================================================================================================

    • Constructor Parameters

         你可以像这样读取一个给定的构造函数所接收的参数:

    Constructor constructor = ... // obtain constructor - see above
    Class[] parameterTypes = constructor.getParameterTypes();

    =====================================================================================================

    • Instantiating Objects using Constructor Object

         你可以像这样实例化一个对象:

    //get constructor that takes a String as argument
    Constructor constructor = MyObject.class.getConstructor(String.class);
    MyObject myObject = (MyObject) constructor.newInstance("constructor-arg1");

         Constructor.newInstance( )方法接受不定个数的参数,但是你必须提供你调用的构造函数需要的每个参数。在这种情况下,调用接受一个String类型参数的构造函数,你必须提供一个String类型的参数。

     ========================================================================================

    • 目录

      这是一个本教程到目前为止涵盖的主题列表:     

    1. Java反射——引言
    2. Java反射——Class对象
    3. Java反射——构造函数
    4. Java反射——字段
    5. Java反射——方法
    6. Java反射——Getter和Setter
    7. Java反射——私有字段和私有方法
    8. Java反射——注解
    9. Java反射——泛型
    10. Java反射——数组
    11. Java反射——动态代理
    12. Java反射——类的动态加载和重新加载

    (敬请期待下一篇翻译)

  • 相关阅读:
    12.数组三--数组的冒泡排序与快速排序
    11.数组二
    10.数组一
    Vue之组件与父子传值
    Django模型层
    面向对象的组合用法
    面向对象初识
    Python内置函数
    列表推导式,生成器表达式
    装饰器进阶
  • 原文地址:https://www.cnblogs.com/penghongwei/p/3300063.html
Copyright © 2020-2023  润新知