"Frederico Charle S. Faria" wrote:
>
> Einar Saukas wrote:
> >
> > Essa discussão está bem legal, mas de qualquer forma o problema
> > original continua em aberto: como fazer para instanciar uma classe,
> > repassá-la para o construtor da classe base e depois ainda guardá-la
> > numa variável de instância?
> >
> > Ou, colocando o problema de outra forma, existe alguma maneira
> > de implementar algo assim:
> >
> > class MessageOutputStream extends ObjectOutputStream {
> > private ByteArrayOutputStream _bos;
> > MessageOutputStream() throws java.io.IOException {
> > super(_bos = new ByteArrayOutputStream()); // ERRO!
> > }
> > }
> >
> > ... de forma que o cliente possa usar essa classe fazendo
> > apenas isto:
> >
> > MessageOutputStream var = new MessageOutputStream();
> >
> > Alguém tem mais sugestões?
>
> Talvez isto resolva seu problema:
>
> class MessageOutputStream extends ObjectOutputStream {
> private ByteArrayOutputStream _bos;
> static MessageOutputStream constroi() throws java.io.IOException {
> ByteArrayOutputStream tmp = new ByteArrayOutputStream();
> MessageOutputStream mos = new MessageOutputStream(tmp);
> return mos;
> };
> MessageOutputStream(ByteArrayOutputStream _bosvar) throws java.io.IOException {
> super(_bosvar);
> _bos = _bosvar;
> };
> }
Opa, essa é uma boa solução!
Ela só não chega a ser perfeita porque a forma de instanciação da
classe não fica muito natural. Quer dizer, ao invés da forma padrão:
MessageOutputStream var = new MessageOutputStream();
... o cliente tem que fazer algo assim:
MessageOutputStream var = MessageOutputStream.constroi();
Pode não ser muito "bonito", mas já funciona melhor do que as
que eu tinha pensado. Pelo menos ela esconde a utilização interna do
ByteArrayOutputStream, que era o objetivo principal.
Legal, é essa solução mesmo que eu vou adotar, a não ser que
alguém consiga bolar alguma mágica para fazer a instanciação da forma
convencional...
Então obrigado pela idéia!
Um abraço,
Einar Saukas
Technical Consultant
Summa Technologies, Inc.
http://www.summa-tech.com
--------------------------- LISTA SOUJAVA ---------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
---------------------------------------------------------------------