Referencje

0

Mam pytanie być może proste dotyczące referencji .

Przykładowo załóżmy, że tworze w pętli n obiektów o tej samej nazwie np. 100. Klasa tych obiektu posiada kilka zmiennych typu String. Każdemu nowo tworzonemu obiektowi przypisuje wartości tych zmiennych, załóżmy że będą to losowe Stringi .

Jak.odwolac się, wyświetlić wartości każdego z obiektów jak ich nazwa jest taka sama ?
Nie używam żadnych tablic , obiekty się tworzone w pamięci , w pętli tworze obiekt o tej samej nazwie .
Rozumiem że stworzę 100 obiektów , każdy z nich będzie przechowywał jakieś zmienne ale jak się do nich dobrać ?

0

A jak przetrzymujesz te obiektu? Czy po wyjściu z pętli da się dostać do tych obiektów? Bo śmierdzi mi tu bugiem ...

Możesz użyć czegoś w rodzaju multimapy (poszukaj w Guava) albo użyć mapy list, używając jako klucza nazwę obiektu (stringa).

0
MattX napisał(a):

Mam pytanie być może proste dotyczące referencji .

Przykładowo załóżmy, że tworze w pętli n obiektów o tej samej nazwie np. 100. Klasa tych obiektu posiada kilka zmiennych typu String. Każdemu nowo tworzonemu obiektowi przypisuje wartości tych zmiennych, załóżmy że będą to losowe Stringi .

Jak.odwolac się, wyświetlić wartości każdego z obiektów jak ich nazwa jest taka sama ?
Nie używam żadnych tablic , obiekty się tworzone w pamięci , w pętli tworze obiekt o tej samej nazwie .
Rozumiem że stworzę 100 obiektów , każdy z nich będzie przechowywał jakieś zmienne ale jak się do nich dobrać ?

Obiekty nie mają nazw.
*Referencja *to taka nazwa wskazująca na obiekt - dzięki czemu masz się do niego jak dobrać.
Może być wiele *referencji *o różnych nazwach wskazujących na ten sam obiekt.

Ale jak zgubisz referencje do obiektu (bo nadpiszesz czymss innym)to nie ma się do niego jak dostać. Obiekt staje się śmieciem. Garbage collector JVM go sprząta.
Koniec.

Przykład:

MyClass ref1 = new MyClass("jakies", "stringi");
MyClass ref2 = new MyClass("inne", " zupełnie stringi"); 
// teraz mam dwa obiekty dostępne pod dwoma referencjami
ref1 = ref2; //nadpisuje ref1 wskazanie na obiekt spod ref2 ... dwie referencje -> jeden obiekt
//amba fatima, był obiekt typu MyClass  i go ni ma
//nijak się już nie da dostac ("normalnie") do tego obiektu stworzonego w pierwszej linii.
0

Zakładając że w pętli tworze 100 obiektów o tej samej nazwie:

Node node = new Node()

W pamięci tworzone są kolejno z referencjami np.
node@827362
node@384837

Nigdzie nie przechowuje referencji to czy można jakoś odwołac się do każdego z kolei ...

0

Musisz te obiekty zapisywać w jakiejś kolekcji - najlepiej liście albo mapie (interfejsy List i Map)

0

Tak , zgadza się , zastanawiałem sie tylko czy jeżeli tego.noe zrobię to czy można jakoś odnaleźć obiekty wg tej nazwy node@* gdzie gwiazdka to referencja .

0
MattX napisał(a):

Node node = new Node()

W pamięci tworzone są kolejno z referencjami np.
node@827362
node@384837

Tak jak Ci pisałem nieprawda. Cały czas masz jedną referencję: node.
Stworzyłeś ileś instancji obiektu Node, ale nie mając do nich referencji (masz tylko do ostatniego) zasadniczo straciłeś dostęp :-(
Musisz się z tym pogodzić i żyć dalej.
Stwórz sobie t obiekty na nowo (będą praktycznie takie same - nie ma co żałować) i tym razem przypisz do jakieś Listy to będziesz miał referencję (do Listy, a lista bedzie miała referencję na te obiekty).

node@* czy node@384837 to nie jest żadna referencja. Mylisz pojęcia. Czyżbyś programował wcześniej w C ?

0

Ok , dzięki rozumiem

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