List< com duas classes.  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
simberg
JavaChild
[Avatar]

Membro desde: 07/11/2006 16:12:16
Mensagens: 102
Offline

List<ContatoDefesa> list_dt = new ArrayList<ContatoDefesa>(); (ContatoDefesa é um javabean)

Sei fazer o List para uma classe, mas quando quiser fazer uma listagem com vários banco de dados diferentes?

O List permite isso?

tipo: List<ContatoDefesa & ContatoCandidatos> etc. Sei q essa sintaxe está errada, era só para me explicar...

Obrigado
_Renatu
Virtual Machine Man
[Avatar]

Membro desde: 04/08/2004 19:47:38
Mensagens: 597
Offline

Isso não dá pra fazer. O que você pode fazer é ter uma interface ou superclasse comum aos dois.
Por exemplo, no seu caso, uma classe Contato e suas classes herdando dela.

aí você pode utilizar:

Renato Freitas
Compartihe Arquivos do seu curso ou faculdade no ebaH
Patentes Brasileiras
Patentes de Venezuela
Patentes de Chile
Patentes de Mexico
Patentes de Colombia
Patentes de Argentina
Patentes Online
http://www.twitter.com/renatoebah
[WWW] [ICQ]
fiaux
GUJ Master
[Avatar]

Membro desde: 16/06/2006 11:58:29
Mensagens: 1184
Localização: Rio de Janeiro - RJ
Offline

Ou faz uma lista sem dizer o tipo de classe que ela suporta, como era antes, e coloca qualquer coisa lá dentro. O problema é a falta de controle. Ou declara ela como List<Object>, o que é feio.
Nenhuma das opções é recomendável. Talvez você poderia usar um Map.

This message was edited 1 time. Last update was at 07/08/2008 15:23:36


Necessita-se:
1) Inglês técnico para pesquisas no Google.
2) Português técnico para perguntas e respostas no fórum.

http://www.ffiaux.com

"Após 7,5 milhões de anos processando, o Pensador Profundo responde a Questão Fundamental da Vida, o Universo e Tudo o Mais. E a resposta é: 42"

"Java é uma ilha, Ruby é uma pedra, Phyton é um réptil, C é uma letra e AJAX é um detergente"

Não sou fanático por programação, só trabalho aqui...
[WWW]
abelgomes
Virtual Machine Man
[Avatar]

Membro desde: 12/06/2008 17:08:23
Mensagens: 706
Localização: Manaus-AM
Offline

pois é a falta de controle é um problema no caso ai de cima...

ou vc cria um novo objeto com os tipos dos objetos que queres fazer a lista..sacou?

tipo:

public class MyList{
private MeuTipo1;
private MeuTipo2;

}

List<MyList>.....

sacou...fica meio estranho..mas vale....ou pode fazer

igual ao _Renatu falou...

...the only easy day was yesterday...
[Email] [MSN]
lidianycs
JavaBaby
[Avatar]

Membro desde: 08/11/2006 18:51:17
Mensagens: 81
Localização: Midgart
Offline

Melhor tentar!

Usar um Map :
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html

Ou um HashMap :
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

This message was edited 2 times. Last update was at 07/08/2008 19:07:49

dlt
JavaEvangelist
[Avatar]

Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline

se suas classes ContatoDefesa e ContatoCandidatos extendessem ou implementassem uma classe comum, tipo

ContatoDefesa extends Contato, ContatoCandidato extends Contato

voce poderia fazer

List<? extends Contato> listaContatos = ...

List<Object> nao funcionaria

mais infos sobre generics -> generics

This message was edited 1 time. Last update was at 08/08/2008 07:17:12


"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis
simberg
JavaChild
[Avatar]

Membro desde: 07/11/2006 16:12:16
Mensagens: 102
Offline

Deu certo!!

Valeu rapaziada.

Criei a superclasse Contato, estendi para as outras classes.

Obrigado.
simberg
JavaChild
[Avatar]

Membro desde: 07/11/2006 16:12:16
Mensagens: 102
Offline

Agora tô com um problema mais simples:
----------------
List<Contato>list_cc = new ArrayList<Contato>();
while(rs.next()){
Contato c1=new ContatoDefesa();
Contato c2=new ContatoCandidatos();
Contato c3=new ContatoProfessores();
Contato c4=new ContatoLocal();

c1.setData(rs.getDate("data"));
c1.setHorario(rs.getTime("horario"));
c2.setNome_aluno(rs.getString("nome_aluno"));
c2.setTitulo(rs.getString("titulo"));
c2.setTipo(rs.getBoolean("tipo"));
c3.setNome_professor(rs.getString("nome_professor"));
c4.setDescricao(rs.getString("descricao"));

list_cc.add(c1);
list_cc.add(c2);
list_cc.add(c3);
list_cc.add(c4);
}

rs.close();
stmt.close();
return list_cc;

Ao tentar gerar a lista, ele faz uma confusão repetindo campos, porém sem dados, se eu colocar como comentário todos os c?, deixando apenas c1, o resultado dá certinho na busca da lista.
Desse jeito:
3 registros só c1 ativado - data e horario:
--------
Nome do Aluno: Horario:12:00:00 Nome do Professor:
Título: Local: Data:2008-07-30
Nome do Aluno: Horario:12:00:00 Nome do Professor:
Título: Local: Data:2008-08-01
Nome do Aluno: Horario:13:00:00 Nome do Professor:
Título: Local: Data:2008-08-01
-----------

Ativando agora c2, com nome_aluno (apenas)
-------------------
Nome do Aluno: Horario:12:00:00 Nome do Professor:
Título: Local: Data:2008-07-30
Nome do Aluno:Amanda Croissant Horario: Nome do Professor:
Título: Local: Data:
Nome do Aluno: Horario:12:00:00 Nome do Professor:
Título: Local: Data:2008-08-01
Nome do Aluno:Carlos Merlot Camarão Horario: Nome do Professor:
Título: Local: Data:
Nome do Aluno: Horario:13:00:00 Nome do Professor:
Título: Local: Data:2008-08-01
Nome do Aluno:Rosa Horario: Nome do Professor:
Título: Local: Data:

------------------
Apenas 3 registros, mas aparece como se fossem 6, porém vazios.

Tô vendo um jeito se alguém puder me ajudar agradeceria muito.

dlt
JavaEvangelist
[Avatar]

Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline

cole seu codigo entre as tags code.

o que é rs?


acho que o que vc quer é algo parecido com:



"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis
simberg
JavaChild
[Avatar]

Membro desde: 07/11/2006 16:12:16
Mensagens: 102
Offline

dlt --- Vai o início do código que está no DAO.
-------------
public List<Contato>getLista_cc() throws SQLException{
PreparedStatement stmt= this.connection.prepareStatement("SELECT........");
ResultSet rs=stmt.executeQuery();

List<Contato>list_cc = new ArrayList<Contato>();
while(rs.next()){
Contato c1=new ContatoDefesa();
Contato c2=new ContatoCandidatos();
Contato c3=new ContatoProfessores();
Contato c4=new ContatoLocal();
.
.
.
-------------

página jsp (visualização)

<jsp:useBean id="dao" class="br.direito.defesas.dao.ContatoDAO" />


<c:forEach var="contato" items="${dao.lista_cc}">
<tr>
<TD>
Nome do Aluno:${contato.nome_aluno}
</td>
<TD>
Horario:${contato.horario}
</td>
<td>
Nome do Professor:${contato.nome_professor}
</td>
</tr>
<tr>
<td>
Título:${contato.titulo}
</td>
<td>
Local:${contato.descricao}
</td>
<td>
Data:${contato.data}
</td>
</tr>
</c:forEach>

-----------------------
simberg
JavaChild
[Avatar]

Membro desde: 07/11/2006 16:12:16
Mensagens: 102
Offline

Consegui.

Como eu tinha feito a superclasse, instanciei ela e fiz toda referência para ela, simples.

Obrigado, quem passar pelo mesmo problema pode resolver dessa forma.
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team