原文地址: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反射——类的动态加载和重新加载

(敬请期待下一篇翻译)

【译】3. Java反射——构造函数的更多相关文章

  1. 【译】1. Java反射——引言

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html *By Jakob Jenkov Java的反射机制使得它可以在运行时检查类.接 ...

  2. 【译】2. Java反射——Class对象

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

  3. 【译】4. Java反射——字段

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

  4. 【译】5. Java反射——方法

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

  5. 【译】6. Java反射——Getter和Setter

    原文地址:http://tutorials.jenkov.com/java-reflection/getters-setters.html ============================== ...

  6. 【译】7. Java反射——私有字段和私有方法

    原文地址:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html =================== ...

  7. 【译】8. Java反射——注解

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

  8. 【译】9. Java反射——泛型

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

  9. 【译】10. Java反射——数组

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

随机推荐

  1. python之路--MySQL多表查询

    一 介绍 我们在写项目的时候一般都会建一个数据库,数据库里面会存很多的表,不可能把所有的数据都放在一张表里,因为分表来存数据节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上还不是一个整 ...

  2. MyBatis基础:MyBatis数据基本操作(2)

    1. MyBatis映射器 2. MyBatis数据基本操作 示例项目结构: <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...

  3. LoadRunner Vuser接口测试脚本 Post举例

    发送内容为JSON的POST请求需要加入"EncType=application/json",表单参数不需要.(JAVA API) // POST接口调用 web.custom_r ...

  4. LODOP打印控件如何提示用户升级下载安装新版本

    Lodop.C-Lodop在不断完善功能和更新中,新版本修复了很多问题,以及增加很多有利的功能,网站如何更新版本,提示用户下载新版本呢?更新版本很简单,只需要三步:1.替换提示安装部分的自己放置的路径 ...

  5. MySQL 索引长度和区分度

    首先  索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度加长,区分度就高,但是索引也是要占内存的,所以我们需要找到一个平衡点: 那么这个平衡点怎么来定? 比如用户表有个字段 ...

  6. mybatis查询修改同时操作

    update dic_purchase set state =0 where purchase_number in (select tmp.* from (select purchase_number ...

  7. Django+Xadmin打造在线教育系统(八)

    首页和全局404,500配置 轮播图 公开课 授课机构 新建view ## 首页view class IndexView(View): def get(self,request): # 取出轮播图 a ...

  8. Codeforces551 C. GukiZ hates Boxes

    二分答案 + 贪心 传送门:$>here<$ $Solution$ 二分时间+贪心验证.思维难度主要在验证上,然而坑人的点却在n的取值上.那么先来谈如何验证.在已知时间的条件下,能否用一种 ...

  9. 数据分析---用pandas进行数据清洗(Data Analysis Pandas Data Munging/Wrangling)

    这里利用ben的项目(https://github.com/ben519/DataWrangling/blob/master/Python/README.md),在此基础上增添了一些内容,来演示数据清 ...

  10. python 识别验证码

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/instal ...