Good morning,

Out of curiosity why must reflection be used for the create*Stream() methods in 
the ArchiveStreamFactory and CompressorStreamFactory? There is a cast at the 
end of each method to a corresponding interface anyway (ex ArchiveInputStream, 
ArchiveOutputStream, etc) so why cant we use this knowledge ahead of time and 
execute on the interface? The current implementation makes it next to 
impossible to capture errors being thrown by the constructors of new 
implementations since the reflective methods discard any Exceptions and simply 
return null. 

I would like to know why this design decision was made just in case I am 
missing something.

Regards,
Tim

Reply via email to