• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dodawanie do listy w obiecie

0 głosów
59 wizyt
pytanie zadane 13 lutego 2021 w Java przez Lulex Użytkownik (560 p.)

Cześć.

Chciałem pobawić się troche w apke dla komisu samochodowego. Mam klasę Vehicle i klasę Person (klienta komisu). W klasie Person mam utworzone pola w których jest m.in lista wszystkich pojazdów jakie posiada  ta osoba.

List<Vehicle> listOfOwnedVehicles;

I teraz - osoba chce kupić pojazd z komisu więc chcę dodać obiekt klasy Vehicle do tej listOfOwnedVehicles . W jaki sposób mogę to zrobić?

Próbowałem z 

person.getListOfOwnedVehicles().add(Vehicle);

i z setterem, no ale nie działało niestety.

 

public void sellVehiculeForCustomer(List<Person> listOfPersons, List<Vehicle> listOfVehicles) {
        int choosedPerson, choosedVehicle;

        System.out.println("*SELL A VEHICULE*");
        System.out.println("Choose a customer: ");

        choosedPerson = scanner.nextInt();

        System.out.println("Choose a vehicle which will be sold: ");
        choosedVehicle = scanner.nextInt();

        Vehicle soldVehicle = listOfVehicles.get(choosedVehicle - 1);

        for (Person person : listOfPersons) {
            if (person.getId() == choosedPerson) {
                    person.getListOfOwnedVehicles().add(soldVehicle);
                }
            }
        }
    }

 

1 odpowiedź

0 głosów
odpowiedź 13 lutego 2021 przez Wiciorny Mędrzec (196,740 p.)
edycja 13 lutego 2021 przez Wiciorny

Co zwraca metoda getListOfOwnedVehicles() :) i jak wygląda  klasa sama w sobie?
I druga sprawa, jak sprawdzasz, czy element został dodany, bo mam wrażenie, że mylisz liste- należącą np do obiektu, a liste, do klasy... tu też się kładnia pojęcia static vs object fields

Bo sama deklaracja bez inicjalizacji - generalnie jesli dodasz element do takiej kolekcji to go nie dodajesz. i nadal będzie to null 

List<Vehicle> listOfOwnedVehicles;

// dla przykładu tutaj 
static List<String> test;

public static void main(String[] args) {
    test.add("dupa");
    System.out.println(test.toString()); // zwróci null 

}

a swoją drogą 

List<Vehicle> listOfOwnedVehicles;

to nie jest lista, to jest referencja na liste, ale nawet nie ma obiektu tutaj, więc to jest na razie  jest to wskaxnik na typ zwracany, a nie na "coś konkretnego" 

Podobne pytania

0 głosów
1 odpowiedź 468 wizyt
pytanie zadane 31 sierpnia 2016 w Java przez Jonki Dyskutant (8,190 p.)
0 głosów
1 odpowiedź 62 wizyt
0 głosów
1 odpowiedź 2,480 wizyt
pytanie zadane 19 lipca 2016 w C i C++ przez JAKUBW Nałogowiec (33,500 p.)

86,448 zapytań

135,207 odpowiedzi

300,348 komentarzy

57,196 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...