| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 10:39:42
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Bom dia a todos
Gostaria de saber se é possível descobrir se um objeto foi gerado a partir de uma classe anônima e, caso seja uma instância de uma classe anônima, descobrir em que classe essa classe anônima foi declarada.
Eu estou montando uma estrutura de classes e quero evitar que sejam criadas inner classes e classes anônimas nessa estrutura. Para descobrir se é uma inner class eu usei o método getDeclaringClass() da classe (não sei se é a melhor forma... se não for me corrijam, por favor..), mas ainda não descobri como identificar o objeto se refere a uma classe anônima.
Alguma ajuda?
Grato pela atenção
Éberson
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 10:59:48
|
Edson Watanabe
Debugger
Membro desde: 05/07/2007 12:38:12
Mensagens: 58
Localização: SP
Offline
|
Uma classe anônima normalmente tem um nome como "components.ToolBarDemo$23", ou seja, o nome da classe tem um cifrão e um número. Embora você possa criar um programa com uma classe com esse nome (que não é inválido em Java, se você for ver), normalmente você nem se lembra que nomes com cifrões são legítimos em Java e não cria classes com esses nomes.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 11:12:10
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Edson Watanabe wrote:Uma classe anônima normalmente tem um nome como "components.ToolBarDemo$23", ou seja, o nome da classe tem um cifrão e um número. Embora você possa criar um programa com uma classe com esse nome (que não é inválido em Java, se você for ver), normalmente você nem se lembra que nomes com cifrões são legítimos em Java e não cria classes com esses nomes.
Bom dia Edson, obrigado pela resposta.
Eu tinha pensado em testar o nome da classe, mas pensei que não seria uma boa estratégia e nem muito segura por causa dos nomes que poderiam ser usados na classe.
Será que não existe nenhuma forma de saber do java se a objeto se refere a uma classe anônima com certeza?
[]s
This message was edited 2 times. Last update was at 27/08/2009 11:14:37
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 11:18:23
|
Edson Watanabe
Debugger
Membro desde: 05/07/2007 12:38:12
Mensagens: 58
Localização: SP
Offline
|
Class.isAnonymousClass (a partir do Java 5)
This message was edited 1 time. Last update was at 27/08/2009 11:18:34
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 11:23:32
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Desculpe, esqueci de mencionar... mas preciso de algo que possa ser usado no java 4 ? (não me crucifiquem, por favor... ainda estamos migrando para o java 6...)
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 11:30:05
|
wandersonxs
JavaEvangelist
![[Avatar]](/images/avatar/c8862fc1a32725712838863fb1a260b9.jpg)
Membro desde: 24/04/2004 00:58:05
Mensagens: 492
Localização: São Paulo/SP
Offline
|
Mais um motivo para migrar para uma versão mais atual.
Convensa seu chefe a contratar mais pessoas para a migração ser mais rápida.
Abraços
Wanderson
|
Assina o q????

|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 14:23:49
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Queria aproveitar o post e tirar outra dúvida...
Eu tenho um método estático e gostaria de descobrir quem o invocou. É possível?
Grato,
Éberson
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 14:49:43
|
Edson Watanabe
Debugger
Membro desde: 05/07/2007 12:38:12
Mensagens: 58
Localização: SP
Offline
|
a) Passe o objeto .class da classe que chamou o método como parâmetro (maneira mais rápida, mas um pouco incompleta).
b) Crie um java.lang.Throwable, chame seu método fillInStackTrace, e use o método getStackTrace para obter as informações desejadas. (Isso é feito pelo log4j, por exemplo).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/08/2009 17:04:32
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Muito obrigado Edson.. usei a opção b e funcionou da forma que eu esperava...
[]s
|
|
|
 |
|
|