Parameterized
そのため、個々の汎用型オブジェクトのロードでJUnitテストランナーを呼び出そうとしています。使用される特定のクラスは、子孫クラスに知られています。
もともと私はJUnitが動作するためにを返すメソッドを取得することができましたが、Collection<T>
JUnitが実際に必要であることに気付きましたCollection<T[]>
-ジェネリックの配列を作成することにJavaが気が進まない/拒否するため、この配列を作成するのに問題があります。
protected static <T> Collection<T> someMethod(Class<T> someClass)
{
Collection<T> result = new ArrayList<T>();
T someBean;
while (someCondition(...))
{
//Do some stuff to compute someBean
result.add(someBean);
}
return result;
}
現在、JUnitには次のCollection<T[]>
ようなものが必要です。
// (descendant class)
@Parameters
public static Collection<SomeActualClass[]> data()
{
return someMethod(SomeActualClass.class);
}
だから私は次のようなことをしてリターンタイプを変更したいと思います:
protected static <T> Collection<T[]> someMethod(Class<T> someClass)
{
Collection<T[]> result = new ArrayList<T>();
T someBean;
while (someCondition(...))
{
//Do some stuff to compute someBean
result.add(new T[]{someBean});
}
return result;
}
残念ながら、ジェネリック配列を作成できないため、Javaではこれを実行できません。
私は声明を次のように言いたくなりresult.add((T[])new Object[]{someBean});
ますが、これは安全ですか?またはもっと良い方法はありますか?