Napotkałem się z problemem, na który nie wiem co zdziałać.
W klasie chcę, aby każdy obiekt miał swoje id.
W tym celu stworzyłem zmienną klasową:
static int zmienna_klasowa=1;
W konstruktorze, każdy obiekt dostaje id = zmienna_klasowa, następnie zmienna_klasowa jest inkrementowana, aby kolejny obiekt dostał kolejną liczbę.
Do tego mam dwie metody void:
static public void poprawID2()
{
zmienna_klasowa=zmienna_klasowa-1;
}
public void poprawID(int a)
{
if(this.id>a)
{
this.id--;
}
}
Pierwsza metoda przy usuwaniu któregoś z obiektów, zmniejsza o 1 zmienną_klasową. Druga poprawia ID obiektów, które miały ID większe niż usunięty obiekt, aby wszystkie ID były po kolei i nie było luk, typu: [1, 2, 3, 6, 7, 9]. Parametr int a - jest indeksem usuniętego obiektu.
No i wszystko okey, działało to, jednak gdy wprowadziłem w moim programie możliwość, korzystania z kilku plików, na których są różne listy ArrayList z elementami mojej klasy, wtedy cała koncepcja runęła, bo wszystkie listy, korzystają z tej samej zmiennej_klasowej, przez co przykładowo, jeśli lista nr1. ma 20 obiektów, a lista nr.2 tylko 4 obiekty, to gdy dodam do niej nowy obiekt, to ma id=21, a nie 5. Zapewne rozumiecie o co chodzi.
Jest mi ktoś w stanie powiedzieć, jak to naprawić?
Z góry dzięki.