EDYTOWANIE: Przez przypadek mam na myśli dużą liczbę obliczeniową bez semantycznego znaczenia dla nas jako programistówDlaczego warto korzystać z liczb losowych dla wersji seryjnej UID?
Podczas implementacji interfejsu Serializable jego najlepsza praktyka i bardzo ważne jest podanie numeru seryjnego UID. W wielu miejscach często używam liczb losowych. Na przykład.
Efektywna Java (2nd edition) pg 312:
private static final long serialVersionUID = 234098243823485285L;
Od klasy String w Javie 6:
private static final long serialVersionUID = -6849794470754667710L;
z klasy ArrayList w Javie 6:
private static final long serialVersionUID = 8683452581122892189L;
itp. Nawet zaćmienie oferuje opcję generowania tych liczb losowych (chociaż domyślnie domyślnie generowane jest serialVersionUI D z 1L
)
Dlaczego warto używać liczb losowych? Czy nie ma sensu zaczynać od 1L i zwiększać do 2L, gdy zmienia się jak każda sensowna kontrola wersji? Jedyny przypadek, w którym mogę pomyśleć o użyciu pozornie losowej liczby, to jeśli nie określiłeś początkowego numeru seryjnego i chciałbyś to zrobić teraz (który wiąże Cię z autogenerowaną wersją czasu wykonywania w celu zapewnienia zgodności wstecznej).
Nie sądzę, że są to liczby "losowe", po prostu wydają się arbitralne. To prawdopodobnie jakiś skrót członków/metod w klasie. W sumie jednak. Nie mam żadnych informacji na poparcie tego stwierdzenia. –
@ JonathanNewmuis Jest on obliczany na podstawie sygnatur metod i takich. – JustinKSU
Masz rację, ponieważ są one wartościami obliczonymi, ale ponieważ nie mają dla nas znaczenia, są efektywnie losowe –