我遇到过这样的情况:我的 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();
// ..
}
}
您有什么想法可以解决这个问题吗?
Edit:
这是一个研究项目的一部分,我们需要评估具有多个不同输入的多个不同压缩机的性能。Class ccos
是一个压缩的OutputStream
来自 Java 的标准库、Apache Compress Commons 或 lzma-java。
目前我有以下似乎工作正常的内容。欢迎其他想法。
OutputStream os = new ByteArrayOutputStream();
OutputStream compressedOut = (OutputStream) ccos.getConstructor(OutputStream.class).newInstance(os);
final InputStream sourceIn = new ByteArrayInputStream(array);
您可以使用Class.getConstructor(paramsTypes...)
方法和调用newInstance(..)
在构造函数上。在你的情况下:
Compressor.class.getConstructor(Class.class).newInstance(Some.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)