Einar Saukas wrote:
> "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.
Não concordo muito com essa opinião pois alguns dos Design Patterns do Gamma são
baseados em implementações deste tipo. Mas o importante foi como
voce mesmo disse resolver o principal
objetivo!
>
>
> 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]
> ---------------------------------------------------------------------
--
Frederico Charles S. Faria
Especialista em Sistemas
INATEL - PRODEP
Fone/Phone: +55 35 471-9280
--------------------------- 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]
---------------------------------------------------------------------