I can not / know how to use the Setter [closed]

1

I'm trying to do some testing in JAVA here and I'm having problems:

Product class, with initialization and getters/setters

public class Produtos {

    private  String[] nomeItem = {"Item 1","Item 2","Item 3","Item 4","Item 5"};
    private  String[] categoriaItem  = {"Utensílio","Utensílio","Utensílio","Utensílio","Utensílio"};
    private  String[] medidaItem = {"Un","Un","Un","Un","Un"};
    private  String[] dispobinItem = {"5","5","10" ,"10","20"};


    public void iniciaEstoque(String[] nomeItem, String[] categoriaItem, String[] medidaItem, String[] disponibiItem){

        setNomeItem(nomeItem);
        setCategoriaItem(categoriaItem);
        setMedidaItem(medidaItem);
        setDisponibiItem(disponibiItem);

    }


    public String[] getNomeItem() {
        return nomeItem;
    }

    public void setNomeItem(String[] nomeItem) {
        this.nomeItem = nomeItem;
    }

    public String[] getCategoriaItem() {
        return categoriaItem;
    }

    public void setCategoriaItem(String[] categoriaItem) {
        this.categoriaItem = categoriaItem;
    }

    public String[] getMedidaItem() {
        return medidaItem;
    }

    public void setMedidaItem(String[] medidaItem) {
        this.medidaItem = medidaItem;
    }

    public String[] getDisponibiItem() {
        return dispobinItem;
    }

    public void setDisponibiItem(String[] dispobinItem) {
        this.dispobinItem = dispobinItem;
    }

}

The function for inserting a new element:

public class InsereElementos {

    public String[] insereElemento(String[] array, String item){

        int indice;
        int tamanho = array.length;

        String[] arrayDummy = new String[tamanho+1];


            for(indice=0;indice<tamanho;indice++){
                arrayDummy[indice] = array[indice];
            }


            arrayDummy[indice] = item;

            System.out.println(Arrays.toString(arrayDummy));

            return arrayDummy;

        }

}

The main:

public class Principal {

    public static void main(String[] args) {

        String nome = "x";

        String[] dummy = new Produtos().getNomeItem();

        String[] junta = new InsereElementos().insereElemento(dummy, nome);

        new Produtos().setNomeItem(junta);

        System.out.println(Arrays.toString(new Produtos().getNomeItem()));
    }

}

When running, a syso in the function that it inserts shows (returns): [Item 1, Item 2, Item 3, Item 4, Item 5, x]

[Item 1, Item 2, Item 3, Item 4, Item 5]

Where am I going wrong?

Thank you!

    
asked by anonymous 23.12.2016 / 18:42

1 answer

1

You are always instantiating a new object when you are adding an item and when you are picking up the list to write. So the item you added in the previous instance is not inserted in the new instance you created to write the items in the listing.

Try something like this:

public class Principal {

public static void main(String[] args) {


        Produtos produtos = new Produtos();

        String nome = "x";

        String[] dummy = produtos.getNomeItem();

        String[] junta = new InsereElementos().insereElemento(dummy, nome);

        produtos.setNomeItem(junta);


        System.out.println(Arrays.toString(produtos.getNomeItem()));
    }
}

With this you keep the same instance of the products object, which you use to insert a new item and then write this new item inserted in your collection

    
23.12.2016 / 18:55