Stałe pola

0

Witam,
chciałbym stworzyć w klasie pole "ID" które będzie stale ale dla każdego obiektu inne. Jak to zrobić skoro gdy tworze pole w klasie z przydomkiem "final" to kompilator wymaga od razu inicjalizacji ?

1

Może coś takiego:

static int counter = 0;
private int id;
//w konstruktorze
counter++;
id = counter;
0

Nadal możesz użyć modyfikatora final:

class A {    
    private final int x;

    public A() {
        x = 5;
    }
}
0

to jakieś DTO albo encja? czemu nie zrobisz po prostu o.0 ?

private Integer id;
1
bogdans napisał(a):

Może coś takiego:

static int counter = 0;
private int id;
//w konstruktorze
counter++;
id = counter;

Pytanie czy rozwiazanie ma byc thread-safe, to powyzsze nie jest? Poza tym pole moze byc final - final nie znaczy ze trzeba od razu przypisac, final znaczy ze mozna tylko raz przypisac i musi sie to stac do konca inicjalizacji obiektu.

0

Jest taka klasa jak UUID, która powinna rozwiązać ten problem bez kombinowania z wewnętrznymi licznikami. Tyle tylko, że tak stworzony identyfikator nie będzie miał własności związanych z opisaniem kolejności tworzenia obiektów (jest losowy).

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