gpt4 book ai didi

java - 使用构造函数参数从类创建新实例

转载 作者:太空狗 更新时间:2023-10-29 22:46:00 27 4
gpt4 key购买 nike

我的 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);

最佳答案

您可以使用 Class.getConstructor(paramsTypes...) 方法并在构造函数上调用 newInstance(..)。在你的情况下:

Compressor.class.getConstructor(Class.class).newInstance(Some.class);

关于java - 使用构造函数参数从类创建新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com