Wywołanie metody typu klasowego

0

W jaki sposób należy wywołać metodę z poniższego przykładu żeby wyświetliła wszystkie elementy z bazy danych, a nie tylko ostatni?


public class JavaApplication {

        public Osoba doSomething() {

                String sql = "SELECT * FROM test";
                //(...) Wycięty fragment

                Osoba osoba = null;

                while (rs.next()) {
                    osoba = new Osoba(
                            rs.getInt("id"),
                            rs.getString("name"),
                    );
                }
                return osoba;
        }
}

Nie mogę zmodyfikować tej metody. bo tak już dawno bym miał problem z głowy...Próbowałem na różne sposoby i nie wiem jak to zrobić. Tak jak tu wyświetla mi chociaż tylko ostatni element:

JavaApplication a = new JavaApplication();
Osoba osoba = a.doSomething();
String b = osoba.getId() + ". " + osoba.getName();
System.out.println(b);

Proszę potraktować ten fragment jako pseudokod. Pisałem go z pamięci, bo nie mam chwilowo dostępu do swojego komputera. Z góry dziękuję wszystkim chętnym do pomocy.

0

Utwórz w doSomething listę do której w pętli while zapisuj sobie obiekty Osoba a na końcu zwróć całą tablicę. Potem pętla for po obiektach typu Osoba i wypisuj tak jak teraz wypisujesz dla 1 osoby.

0

W tym problem, że nie mogę w żaden sposób zmienić tej metody. Dlatego właśnie nie wiem co z tym zrobić.

0

No to skoro nie możesz jej zmienić ani dopisać własnej to nie da się tak jej wywołać (szczególnie, że jest tylko 1 sposób jej wywołania bo nie przyjmuje żadnych argumentów) żeby zwróciła coś innego niż ostatni element bo tak jest napisana.

0

Takie coś działa:

public class JavaApplication {
 
        public List<Osoba> doSomething() {
 
                String sql = "SELECT * FROM test";
                //(...) Wycięty fragment
 
                Osoba osoba = null;
                List<Osoba> Lista = new ArrayList<>();
 
                while (rs.next()) {
                    osoba = new Osoba(
                            rs.getInt("id"),
                            rs.getString("name"),
                    );
                    lista.add(osoba);
                }
                return lista;
        }
}

Wywołanie:

JavaApplication a = new JavaApplication();
List<osoba> lista = a.doSomething();
        for (Osoba o: lista) {
        String b = o.getId() + ". " + o.getName() + " " + o.getSurname();
        System.out.println(b);
        }

Zrobiłbym tak, ale ktoś się uparł, że nie wolno tej metody tykać. Ma ktoś może jakiś pomysł? Czy to już na 100% nie ma innej możliwości?

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