句法`new Class [] {}`如何工作?

Reg*_*kie 6 java reflection

在这个初学者指南依赖注入的第一个代码示例中,我遇到了一些新构造,我不确定我是否完全理解:

 // Instantiate CabAgency, and satisfy its dependency on an airlineagency.

 Constructor constructor = cabAgencyClass.getConstructor
  (new Class[]{AirlineAgency.class});
 cabAgency = (CabAgency) constructor.newInstance
  (new Object[]{airlineAgency});
Run Code Online (Sandbox Code Playgroud)

什么是new Class[]{AirlineAgency.class}真正的意思是做?

我知道它的目标是创建一个Constructor实例,AirlineAgency.class但语法是如何new Class[]{}实现的呢?

[]当只涉及一个对象时,为什么数组概念?

{}这里的语法是什么?为什么不()呢?

ham*_*mar 8

new Class[] { AirlineAgency.Class }创建一个单元素的Class对象数组并初始化唯一的元素AirlineAgency.class.它类似于new int[] { 42 }.

代码基本上等同于:

Class[] parameterTypes = new Class[1];
parameterTypes[0] = AirlineAgency.class;

Constructor constructor = cabAgencyClass.getConstructor(parameterTypes);

Object[] arguments = new Object[1];
arguments[0] = airlineAgency;

cabAgency = (CabAgency)constructor.newInstance(arguments);
Run Code Online (Sandbox Code Playgroud)

Class.getConstructor方法需要一个构造函数的参数类型数组(以找到要使用的正确重载),同样需要Constructor.newInstance一个参数数组.这就是为什么这样做的原因.