У меня есть ситуация, когда моему классу 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);