Como saber se a classe é do Java ou criada por mim?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
marcosharbs
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2008 11:53:39
Mensagens: 645
Offline

Oi amigos!

Tenho uma rotina que pega um array de Field desse Field pego o getClass(), agora precisaria saber se essa classe é uma classe Java ou uma classe qualquer criada por mim, to tentando fazer a rotina bem genérica, alguma sugestão?

Obrigado!

======================================================

Blog com foco em desenvolvimento web com java.

http://marcosharbs.wordpress.com/

======================================================
hiram
JavaChild
[Avatar]

Membro desde: 13/03/2009 03:03:20
Mensagens: 116
Localização: Belo Horizonte/MG
Offline

Vou ver se acho uma solução mais interessante.

Que tal olhar pelo package da classe?

http://java.sun.com/javase/6/docs/api/java/lang/Class.html

Ou ainda, pelo Fully Qualified Name da classe.

Se for algo "java.*" ou "javax.*" é uma classe da Java API, boa parte dá pra eliminar, mas não dá pra tomar isso como regra geral.

No link http://java.sun.com/javase/6/docs/api/ tem a lista de todos os packages.

Bom, taí a sugestão.

[]'s

This message was edited 1 time. Last update was at 15/06/2009 16:31:03


"Conhecereis a verdade e a verdade vos libertará" - João 8:32
Blog: http://jotageek.blogspot.com
Sun Java Certified Programmer 6
[WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Rode o programa a seguir. Ele pode imprimir algo como:

[WWW]
ozix
JavaEvangelist

Membro desde: 25/05/2006 18:00:15
Mensagens: 326
Localização: Porto Velho
Offline

Programa com crise de identidade!!!

Quem sou eu? http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getName()

De onde vim? http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getPackage()

Isso, é claro, supondo que você sabe pelo package o que é seu.

O céu é azul porque a matrix roda em Windows
hiram
JavaChild
[Avatar]

Membro desde: 13/03/2009 03:03:20
Mensagens: 116
Localização: Belo Horizonte/MG
Offline

thingol wrote:Rode o programa a seguir. Ele pode imprimir algo como:



Opa Thingol... Não entendi exatamente como essa solução funciona. Pode dar uma luz?

[]'s
[WWW] [MSN]
marcosharbs
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2008 11:53:39
Mensagens: 645
Offline

obrigado pelas dicas mas o o nome da classe ou a package não me adiantariam porque queria deichar algo bem genérico que eu fizesse uma lib e jogasse num projeto e pudesse usar, se engessar uma package quando tenta usar num outro projeto vou ter que alterar a package ou então faezr uma package com aquele nome para ele achar as classes.

======================================================

Blog com foco em desenvolvimento web com java.

http://marcosharbs.wordpress.com/

======================================================
marcosharbs
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2008 11:53:39
Mensagens: 645
Offline

po thingol vlwww sempre salvando a galera
acho que da pra usar o que você postou ali em cima
=D

======================================================

Blog com foco em desenvolvimento web com java.

http://marcosharbs.wordpress.com/

======================================================
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

marcosharbs wrote:obrigado pelas dicas mas o o nome da classe ou a package não me adiantariam porque queria deichar algo bem genérico que eu fizesse uma lib e jogasse num projeto e pudesse usar, se engessar uma package quando tenta usar num outro projeto vou ter que alterar a package ou então faezr uma package com aquele nome para ele achar as classes.

Na verdade não fica tão engessado assim: se você usar as convenções de nomeação, todos os pacotes começam pela identificação da empresa (nome do domínio na internet) e o projeto. O que vem depois disso você escolhe, da maneira que ficar mais organizado.
Então se você pegar apenas o começo do nome do pacote a sua lib pode ser usada em todos os projetos de uma determinada empresa que vai funcionar.

Você só vai precisar de algo mais genérico que isso se quiser usar em empresas diferentes, ou então se estiver desconfiado que alguém por aí não anda nomeando os pacotes corretamente
Nesse caso vale a Super-solução do thingol.
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Gostaria que alguém rodasse o programa em uma JVM da IBM ou da BEA. Na JVM da Sun, se uma classe já está no "boot classpath" (ou seja, aquelas classes que ficam em java.*, javax.* ou então em jre/lib/ext, o seu classloader é null; mas não sei se em outras JVMs podemos supor isso. )

Perguntinha... suponhamos que você tenha posto o jar do driver do seu banco de dados em jre/lib/ext. Qual é o seu classloader?

Dizer que o classloader é null é uma solução que não resolve essa ambiguidade.
[WWW]
marcosharbs
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2008 11:53:39
Mensagens: 645
Offline

eu rodei thingol e usei aquele solução ali, se for uma classe do java ele retorna sempre null, do contrário me retorna uma String, e funcionou para solucionar o problema aqui.

======================================================

Blog com foco em desenvolvimento web com java.

http://marcosharbs.wordpress.com/

======================================================
marcosharbs
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2008 11:53:39
Mensagens: 645
Offline

sim gomesrod é que essa solução não é para a empresa na verdade oque fiz foi um Data Source Genérico para o iReport, vc passa uma List de um objeto para ele e ele busca os atributos das classes desse objeto asism como das classe pai e filhas e também das classe que ele se relaciona, e passa os campos que o iReport utiliza no relatório, dai não queria deixar engessado a nomenclatura de pacotes.

======================================================

Blog com foco em desenvolvimento web com java.

http://marcosharbs.wordpress.com/

======================================================
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team