從類創建新的實例我有我的Java類需要創建大量的某種類型的對象的情況。我想給出作爲參數創建的對象類的名稱。另外,我需要在其構造函數中爲創建的類提供一個參數。我有類似的東西從構造函數參數
class Compressor {
Class ccos;
public Compressor(Class ccos) {
this.ccos = ccos;
}
public int getCompressedSize(byte[] array) {
OutputStream os = new ByteArrayOutputStream();
// the following doesn't work because ccos would need os as its constructor's parameter
OutputStream cos = (OutputStream) ccos.newInstance();
// ..
}
}
你有什麼想法,我可以如何補救?
編輯:
這是我們需要評估的多個不同的輸入多個不同的壓縮機性能的一個研究項目的一部分。 Class ccos
是來自Java標準庫,Apache Compress Commons或lzma-java的壓縮的OutputStream
。
目前我有以下似乎工作正常。其他想法是受歡迎的。
OutputStream os = new ByteArrayOutputStream();
OutputStream compressedOut = (OutputStream) ccos.getConstructor(OutputStream.class).newInstance(os);
final InputStream sourceIn = new ByteArrayInputStream(array);
爲什麼你需要告訴`創建Compressor`什麼樣的對象?這裏將使用什麼樣的類? – 2010-12-08 11:29:07
您是否考慮過使用抽象工廠而不是反思? – 2010-12-08 13:19:02
編輯添加一些信息 – lhahne 2010-12-08 13:57:58