从类创建新的实例我有我的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