Stałe pola

Odpowiedz Nowy wątek
2015-02-21 14:55
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 ?

Pozostało 580 znaków

2015-02-21 15:00
1

Może coś takiego:

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

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-02-21 15:04
0

Nadal możesz użyć modyfikatora final:

class A {    
    private final int x;

    public A() {
        x = 5;
    }
}

"Perhaps surprisingly, concurrent programming isn’t so much about threads or
locks, any more than civil engineering is about rivets and I-beams."

Pozostało 580 znaków

2015-02-21 15:12
0

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

private Integer id;

PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
edytowany 1x, ostatnio: karolinaa, 2015-02-21 15:12
yyyyy, a po co mu Data Transfer Object tutaj ? jak ma coś prostego, jakiś typ który nie jest zapisywany do bazy, to żeby uzyskać unikalność - ma go jednak zapisać ? - niezdecydowany 2015-02-21 16:15
ja tylko pytam co to jest za klasa. - karolinaa 2015-02-21 16:17

Pozostało 580 znaków

2015-02-21 15:22
0

a może tak:
http://stackoverflow.com/ques[...]ject-after-the-initialization

Pozostało 580 znaków

2015-02-21 18:56
the real mućka
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.

Pozostało 580 znaków

2015-02-23 12:42
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).

Jakiś atomic variable dla randomowego stringa tez da radę. - niezdecydowany 2015-02-23 13:34

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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