Random ID produktu

0

Witam wszystkich, jestem początkujący

Jako mam do napisania aplikacje zakupową.
Klasy:

  • klasa produkt -> z której dziedziczą klasa Telefon i klasa TV
  • klasa ProduktDB (ArrayList produktów)
  • klasa Zamówienia
  • klasa Klient
  • klasa Testowa (do instancjonowania i ustalania atrybutów)

Moje pytanie:
W jaki sposób tworzyć unikalny produktID, kiedy tworzony jest jakiś produkt. Czy mogę użyć static int ?

1

Twój problem już został rozwiązany. W Javie jest specjalna klasa:
https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html
UUID Tworzysz, na przykład tak:
java.util.UUID.randomUUID();.

0

Dziękuję,

Wydaje mi się, żę źle określiłem co i do czego potrzebuje (być może nie rozumiem koncepcji UUID). Przepraszam.
Podczas instancjonowania z klasy Produkt, objekt otrzymuje produktID. Metoda find() klasy ProduktDB (która ma być obslugiwana przez ArrayList) ma pozwalać znaleźć i zwrócić Produkt za pomocą produktID - w przypadku 128bitowego UUID, może być ciężko.
Dowiedziałem się też że trudno jest przekonwertować UUID do Int.

Czy istnieje jakaś prosta metoda stworzenia losowej int unikalnej tylko w programie.
(To projekt pierwszego semestru, więc nie zależy mi na unikalności w skali światowej).

0
bajzelboy napisał(a):

Podczas instancjonowania z klasy Produkt, objekt otrzymuje produktID. Metoda find() klasy ProduktDB (która ma być obslugiwana przez ArrayList) ma pozwalać znaleźć i zwrócić Produkt za pomocą produktID - w przypadku 128bitowego UUID, może być ciężko.

Dlaczego może być ciężko?

Dowiedziałem się też że trudno jest przekonwertować UUID do Int.

Dlaczego chciałbyś konwertować do int?

Czy istnieje jakaś prosta metoda stworzenia losowej int unikalnej tylko w programie.

Przyjmijmy więc, że wolisz int. Czy na pewno musi być losowy? Czy wystarczy unikalny? Może po prostu pole w ProduktDB (zakładam, że będziesz miał tylko jedną jej instancję) zwiększane np. o 1 przy każdym utworzeniu produktu. Oczywiście jeśli ProduktDB może być używany współbieżnie przez wiele wątków, to trzeba się odpowiednio zabezpieczyć.

0

Nie rozumiem po co do jakiejś prostej aplikacji ma wciskać UUID, kiedy zwykły Integer lub Long w zupełności wystarczy.
@cayman25 już podpowiedział co powinieneś zrobić. Oznacz sobie jeszcze pole jako @Id Integer lub Long i będziesz miał inkrementowany ID w bazie.

0

OP napisał, że jego ProductDB to ArrayList produktów. Mieszacie człowiekowi w głowie tym @Id.

0

Z tego co piszesz to miałeś dobry pomysł - statyczna zmienna typu int powinna załatwić sprawę (przy każdym tworzeniu produktu, jej wartość np inkrementowana)

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