Funkcja która nie działa(nie wyświetla się żaden błąd)

0
import java.util.Collection;

public class Person {


    String name;
    int yearOfBirth;

    Person(String name, int yearOfBirth) {

        this.name = name;
        this.yearOfBirth = yearOfBirth;
    }


    public static boolean findInColl(Collection<Person> coll, String name, int year) {
        Person perosn = new Person(name, year);

        return coll.contains(perosn);

    }

    public String toString() {

        return name + " " + yearOfBirth;
    }
}

Czemu w głównej klasie main nie mogę z niej korzystać tak jakby jej nie było?

0

Masz na myśli metodę findInColl()? Pokaż nam jeszcze jak ją chcesz wywołać :)

0

np. findInColl(list,imie,20);

0

Odpowiedzią na Twoje pytanie jest słowo kluczowe static. Jeżeli metoda jest statyczna to wywołujesz ją tak: NazwaKlasy.NazwaMetody czyli Person.findInColl().
Pytanie dlaczego ta metoda jest jako statyczna i dlaczego tworzysz w niej nowa instancję klasy Person, zamiast wywoływać ją z poziomu już istniejącego obiektu typu Person.

0

nie wiem ale, funkcja nie działa. Zawsze wychodzi false.
w ArrayList<Person> list = new ArrayList<>();
znajduje sie obiekt [adi 12]
System.out.println(Person.findInColl(list,"adi",12));

Wychodzi false. Dlaczego?

0
public static boolean findInColl(Collection<Person> coll, String name, int year) {
    Person perosn = new Person(name, year);

    return coll.contains(perosn);

}

Person perosn = new Person(name, year);
Dlatego ^

Za każdym wywołaniem tej metody tworzysz nową instancję obiektu. NIe ma znaczenia, że dwa obiekty mają mają name adi i wiek 12. Dopóki nie zostanie spełniony kontrakt equals & hashCode, obiekty nie będą sobie równe. Poczytaj o equals & hashCode - musisz to zaimplementować w klasie Person.

0

Dzieki za pomoc. Poczytalem i przeczytałem że środowisko programistyczne moze wygenerować to samo. Nadal nie wiem o co chodzi ale działa więc gitara gra.

0

Warto by było wiedzieć dlaczego działa. Pisząc obiektowo musisz wiedzieć w jakim celu implementuje się metode equals.
Zajrzyj tutaj: https://www.samouczekprogramisty.pl/porownywanie-obiektow-metody-equals-i-hashcode-w-jezyku-java/

0

To wlasnie z tej stronie przeczytalem o generatorze. Wiadomo że to ogarnę ale nie dzisiaj, żarty sobie robiłem.

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