Dúvidas com List<String>

Oiii…

Será que alguém pode me ajudar com uma dúvida bestinha?

Estou inserindo List em uma classe mas quando vou pegar o retorno, ela vem vazia!

O código está abaixo…

Eu tenho uma classe assim:


public class Material {

    
    
    private String nid                = "";    
    private String identificacao  = "";
    private String descricao      = "";
    private String quantidade    = "";
    
    private List<String>   seriais          = new ArrayList<String>();
    private List<String[]> arraySeriais = new ArrayList<String[]>();

    
    //Para Consolidado Automático
    public Material(final String nid, final String identificacao, final String descricao, final String quantidade){

        setNid(nid);
        setIdentificacao(identificacao);
        setDescricao(descricao);
        setQuantidade(quantidade);

    }
        
    public Material(final String nid, final String identificacao, final String descricao, final String quantidade, final List<String> seriais) {
        
        setNid(nid);
        setIdentificacao(identificacao);
        setDescricao(descricao);
        setQuantidade(quantidade);
        setSeriais(seriais);
        
    }
    
    public Material(final String identificacao, final String descricao, final String nid ){
        
        setNid(nid);
        setIdentificacao(identificacao);
        setDescricao(descricao);
        
    }
    
    public Material(final String nid, final String identificacao, final String descricao, final List<String[]> arraySeriais) {
        
        setNid(nid);
        setIdentificacao(identificacao);
        setDescricao(descricao);
        setArraySeriais(arraySeriais);
    }

    
    
    
    public List<String[]> getArraySeriais() {
        return arraySeriais;
    }

    public void setArraySeriais(List<String[]> arraySeriais) {
        this.arraySeriais = arraySeriais;
    }
    
    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    
    public String getIdentificacao() {
        return identificacao;
    }

    public void setIdentificacao(String identificacao) {
        this.identificacao = identificacao;
    }

    public String getNid() {
        return nid;
    }

    public void setNid(String nid) {
        this.nid = nid;
    }

    public String getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(String quantidade) {
        this.quantidade = quantidade;
    }

    public List<String> getSeriais() {
        System.out.println("Retornado: " + this.seriais.size());                              //O tamanho aqui mostra 0 !!!
        return this.seriais;
    }

    public void setSeriais(List<String> seriais) {
        System.out.println("Seriais setados: " + seriais.size());                           //O tamanho aqui mostra certo.
        this.seriais = seriais;
        System.out.println("Seriais setados depois: " + this.seriais.size());          //E aqui também!
    }


}

E tenho outra assim:

public class RelatorioDevolucao extends Relatorios{

    private String razaoSocial    = "";
    private String nomeFantasia   = "";
    private String endereco       = "";
    private String data           = "";
    private String usuario        = "";

    private List<Material> materiais;


    public RelatorioDevolucao(final String razaoSocial, final String nomeFantasia, final String endereco,
                                          final String data, final String usuario, final List<Material> lista
                                         ){

        setRazaoSocial(razaoSocial);
        setNomeFantasia(nomeFantasia);
        setEndereco(endereco);
        setData(data);
        setUsuario(
        setMateriais(lista);

    }

    //Métodos get e set

}

Estou testando as duas assim:


public static void main(String[] args){

        List<Material> lista = new ArrayList<Material>();
        List<String>   ser   = new ArrayList<String>();

        ser.add("01");
        ser.add("02");
        lista.add( new Material("", "ident 01", "desc 01", "02", ser) );
        ser.clear();

        ser.add("03");
        ser.add("04");
        ser.add("05");
        lista.add( new Material("", "ident 02", "desc 02", "03", ser) );
        ser.clear();

        RelatorioDevolucao rda = new RelatorioDevolucao("RAZAO SOCIAL", "NOME FANTASIA", "", "14/05/2009", "TCHELO",  lista);
        
        List<Material> materiais = rda.getMateriais();

        for(Material m : materiais){
            print(m.getIdentificacao(), 1, false);
            print(m.getDescricao(), 14, false);
            print("| " + m.getQuantidade() + " |", 32, true);

            for(String s : m.getSeriais()){
                System.out.println("Entrou no for dos seriais...");      //Nem entra neste for!!
                print(s, 14, true);
            }

            pularLinhas(1);
        }        


    }

mas toda hora a List que pego da Classe Material vem vazia!

Alguém poderia me ajudar???

Não estou entendendo o porque de estar vindo assim…

Obrigado!

Estás a inserir mas a seguir fazes o clear!

  ser.add("01");  
  ser.add("02");  
  lista.add( new Material("", "ident 01", "desc 01", "02", ser) );  
  ser.clear();  

  ser.add("03");  
  ser.add("04");  
  ser.add("05");  
  lista.add( new Material("", "ident 02", "desc 02", "03", ser) );  
  ser.clear();  

A mesma lista ser está a ser adicionada aos dois “Material”… Não podes simplesmente fazer um clear, tens de criar uma nova lista.

  ser.add("01");  
  ser.add("02");  
  lista.add( new Material("", "ident 01", "desc 01", "02", ser) );  
  ser = new ArrayList<String>();

  ser.add("03");  
  ser.add("04");  
  ser.add("05");  
  lista.add( new Material("", "ident 02", "desc 02", "03", ser) );  

aqui o exemplo do Dia da Mãe…

Obrigada pmlm