我有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();
// ..
}
}
你有什么想法可以补救吗?
编辑:
这是一个研究项目的一部分,我们需要评估具有多个不同输入的多个不同压缩机的性能.类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);