[英]Java Construct Generic Instance From Class
我正在嘗試使用類型參數構造泛型類的實例。 例如,如果有ArrayList.class
而我想用String.class
類對其進行初始化,該怎么辦? 我知道我可以使用ArrayList.class.newInstance()
創建一個新實例,但是不能傳遞類型參數。 我想做new ArrayList<String>
,但是對於那個特定的示例,不是任何具有類型參數的類。
具體來說,我正在嘗試通過JUnit測試的子類化來實現對接口的不同實現的測試。
我意識到,可以只返回泛型類的初始化,而無需使用類型參數,而是將其強制轉換為該參數。
例如:
private Class<? extends List> implementation = ArrayList.class;
private <E> List<E> newList(Class<E> itemClass) {
try {
return (List)implementation.newInstance();
} catch (Throwable x) {
return null;
}
}
@Test
public void test1() {
List<String> testInstance = newList(String.class);
testInstance.add('hey');
assertEquals(3, testInstance.get(0).lenght());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.