Problem z iteracja listy obiektów[wykorzystanie interface]

0

Cześć,
Jestem nowy w swiecie Javy, ale napotkałem przeszkode, ktora powoduje, ze po wywołaniu instancji klasy dla danej metody otrzymuje liste obiektów w formie:
[com.company.Produkty@74a14482, com.company.Produkty@1540e19d, com.company.Produkty@677327b6]
Oczywiscie znalazłem obejscie, przez iteracje listy za pomocą ForEach +x.getNazwaPola w metodzie utworzonej w klasie Dane, ale chcialbym zeby to zostalo rozwiązane przez interface(spotkalem sie z taka implementacja w Springu-warstwy danych?) Zdaje sobie sprawe na hejt, ale tak jak pisalem na początku - dopiero co zaczynam przygode z java.

public class Main {

    public static void main(String[] args) {

    Tablice xxS = new Dane();
    System.out.println(xxS.getAllData()); > co wyrzuci [com.company.Produkty@74a14482, com.company.Produkty@1540e19d, com.company.Produkty@677327b6]
    }


}

public class Dane implements Tablice{

        List<Produkty> listOfProd = new ArrayList<Produkty>();

    public Dane(){
        Produkty p1 = new Produkty("Szalas","SASZ",150);
        Produkty p2 = new Produkty("Nowik","ULELE",150);
        Produkty p3 = new Produkty("SAPER","PIONKI",150);
        listOfProd.add(p1);
        listOfProd.add(p2);
        listOfProd.add(p3);

    }



    public List<Produkty> getAllData(){
        for (Produkty x:listOfProd) {
            System.out.println(x.getName() + "," + x.getCity() + "," + x.getPrice() + ".");

        }

        return listOfProd;
    }
    }

public class Produkty {
    private String name;
    private String city;
    private double price;

    public Produkty(String name, String city,double price){
        this.name = name;
        this.city=city;
        this.price =price;

    }

    public String getName() {
        return name;
    }

    public String getCity() {
        return city;
    }

    public double getPrice() {
        return price;
    }
}

public interface Tablice {

    List<Produkty> getAllData();
}

 

Dziękuje za pomoc i wyrozumiałość:)

0

Trudno zgadnąć o co CI chodzi.
Chcesz, żeby metoda getAllData() nie zwracała List<Produkty>? Tylko co?

BTW, proponuję nie używać polskich nazw w programowaniu.

2

list forEach to nie jest obejście - to jest rozwiązanie.

xxS.getAllData().stream().forEach( x -> System.out.println( x.getName() + "," + x.getCity() + "," + x.getPrice() + ".") );
0

Dziekuje Panowie za odpowoedz :)
W tym przypadku rozumiem, ze interface zostal wykorzystany poprawnie, tak?
Bo głównie na tym mi zalezalo, chociaz jak wiadomo moglem wywolac instancje w nastepujacy sposob Dane xxS = new Dane();.

2

Dopisz w klasie Produkty metodę

public String toString(){
   return  getName() + "," + getCity() + "," + getPrice() + ".");
}
0

Propozycja @bogdans rozwiązała problem związany z wyrzucaniem wczesniej prezentowanych danych w formacie(com.company.Produkty@74a14482). Wielkie dzieki :)
Pozdrawiam,

1 użytkowników online, w tym zalogowanych: 0, gości: 1