1

次のコードがわかりません。

Constructor<T>[] constructors = (Constructor<T>[]) clazz.getConstructors();  
for(int i = 0; i < constructors.length; i++){  
  Constructor<T> constructor = constructors[i];    
  if (constructor.getParameterTypes().length>0){    
    T instanceObject = constructor.newInstance(new Object[constructor.getParameterTypes().length]);  
        break;  
  }  

}    

try/catchわかりやすくするために、その他のものは省略しています。
これがどのように機能するのか理解できません。T instanceObject = constructor.newInstance(new Object[constructor.getParameterTypes().length]);
パラメーターを持つコンストラクターを呼び出しますが、引数として渡しますObjectか?
これはどのように作動しますか?Object実際の正式なパラメータとは無関係に 渡す?

4

2 に答える 2

1

すべてがであるダミーパラメータを渡そうとしますnull。これはあなたにオブジェクトを与えることができますが、それが有用なものになるという意味ではありません。;)

長さがゼロのコンストラクターがスキップされる理由はわかりません。これは、引数を正常に渡せない可能性が高い1つのコンストラクターだからです。

于 2012-09-12T07:50:29.293 に答える
1

要素の数がコンストラクターのパラメーターの数と等しいオブジェクトの配列。したがって、次のようになります。

new Object[constructor.getParameterTypes().length])
于 2012-09-12T07:51:47.247 に答える