| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 15:58:03
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Tem como mudar o código de uma classe em tempo de execução no JME?
|
www.bau-de-dev.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 16:16:24
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Vc realmente precisa alterar A CLASSE em tempo de execução?
Alterar seu comportamento, talvez via strategy(http://en.wikipedia.org/wiki/Strategy_pattern) não seria suficiente para seu caso?
Abs
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 16:21:59
|
otavio
JavaChild
![[Avatar]](/images/avatar/9e740b84bb48a64dde25061566299467.png)
Membro desde: 01/08/2004 00:49:29
Mensagens: 139
Localização: JVM
Offline
|
CGLIB e Java Assist permitem manipulação de bytecode em runtime.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 16:36:23
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
O javassist eu estou usando.
Eu tive problema quando tentei usar esta API dentro de um aplicativo mobile, não compilou.
E em relação design parttner eu acho que não vai ajudar muito.
Porque eu quero "alterar" um método da classe MIDlet, para ser mais exato quero incluir algumas linhas no início do método.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 17:18:51
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Descreva um pouco melhor o que vc precisa fazer amigo, tenho quase certeza que strategy vai te ajudar sim.
Me diga seu cenário(o q vc quer fazer a mais) e eu te digo como o Strategy se encaixa ai, se for o caso.
Outra alternativa não tão usual seria a utilização de aspectos para interceptar a chama a seu método, visto q vc disse que quer colocar código no inicio do método, acho q caberia nesse caso.
De qq forma, ainda acredito que o Strategy caiba ai.
Abs
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 17:27:48
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Eu tenho que interceptar a chamada ao método MIDlet.notifyDestroy() de uma aplicação mobile.
Por exemplo, quando a aplicação chamar este método eu quero mostrar uma tela antes da aplicação "morrer".
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 17:36:24
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Não manjo nada de mobile, mas vamos lá.
Esse método é static?
Caso não seja, vc não pode criar uma subclasse dessa sua classe e dar override nesse método de forma que ele faça o que vc deseja, e então, dps disso, chama super.notifyDestroy ?
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 18:02:06
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
O problema que o método é final.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 18:09:00
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
hehe, a idéia é vc não dar override nele então
Se o método é final, deve haver um bom motivo, o que me leva a crer que o que vc quer fazer não é boa idéia.
Imagino que esse seja o método final do lifecycle do midlet e é final justamente pra vc não fazer nada que impeça o objeto de ser destruído(como mostrar uma janela com algo etc )
Acho melhor vc procurar por algo no método destroyApp, pelo visto, é nele que vc deve concentrar a lógica que vc deseja, não aconselho vc a seguir na idéia de fazer algo contra a especificação.
abs
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 18:12:22
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Ai é que está o problema, eu também via o método destroyApp para isso, "matar a aplicação".
Mas tem programas que chamam direto o método notifyDestroyed. Por isso que eu queria incluir código neste método.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 20:11:54
|
otavio
JavaChild
![[Avatar]](/images/avatar/9e740b84bb48a64dde25061566299467.png)
Membro desde: 01/08/2004 00:49:29
Mensagens: 139
Localização: JVM
Offline
|
Jedi_FeniX wrote:
Eu tive problema quando tentei usar esta API dentro de um aplicativo mobile, não compilou.
Se você ler a especificação JME verá que a kvm é uma versão bem minima da JVM. Digamos uma versão pelada. Ou seja, muita coisa que você pode fazer no "java normal" não conseguirá.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 21:31:59
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
É isso em relação a KVM eu sei.
Pelo visto vou ter que mudar a minha estratégia, porque já estou procurando uma solução para este problema a uns dias.
Vocês sabem se tem como varrer um código dentro de um .class atrás de uma linha de código? Isso seria no JSE.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 22:17:34
|
rafaelSaqueli
Debugger
![[Avatar]](/images/avatar/5351d78cb33e8230b3ab264071ed6a33.jpeg)
Membro desde: 11/02/2009 22:02:48
Mensagens: 68
Offline
|
GraveDigger,
Estou com um problema que talvez possa me ajudar. Tenho uma classe A que extends Canvas, nela subscrevo o método abstract keyPressed(). Pois bem, preciso que este método trate os eventos do teclado de acordo com o desejado ao decorrer da execução. Ou seja, hora trate um botão de uma forma, outra hora trata o mesmo botão de forma totalmente diferente, de acordo com o que for necessário. É possivel resolver isso com algum padrão de projeto? Como + ou - funciona o Strategy que citou acima? Será que ele resolveria esse problema?
Obrigado.
|
Write once, run anywhere. |
|
|
 |
|
|