abstract + final?

0

Z góry mówię - wiem, połączenie abstract i final nie zadziała.

Chcę jednak osiągnąć taki efekt - brak możliwości użycia konstruktora oraz brak możliwości rozszerzenia klasy. Po co?
Cała klasa funkcjonuje na metodach i polach statycznych. Chcę poprzez to osiągnąć całkowitą pewność, że zmienna wewnątrz klasy zostanie utworzona tylko jeden raz. Można by tworzyć obiekty, ale jest to niewygodne, więc postanowiłem, że ta jedna klasa będzie w 100% statyczna. Sęk w tym, że static class nie działa.

Podsumowując, chcę zablokować możliwość tworzenia obiektu mojej klasy. Jak?
/Najpewniej okaże się, że odpowiedź jest banalnie prosta/

2

Zdefiniuj tylko jeden konstruktor, i zrób go prywatnym.

0

Czy dobrze widzę że chodzi Ci o wzorzec Singleton
w Javie tworzy się go banalnie prosto
public enum NazwaKlasy {
INSTANCE;
int age;
public static int getAge() {
return INSTANCE.age;
}
}

Możesz dodawać pola jakie chcesz i metody a wywowłanie klasy jest poprzez INSTANCE i kropka czyli INSTANCE.age(jeśli age jest public) lub wywołujesz metodę za kropką;

0
ShookTea napisał(a):

Chcę jednak osiągnąć taki efekt - ze zmienna wewnątrz klasy zostanie utworzona tylko jeden raz.

jesli pola są statyczne to obiekty przypisane do statycznej referencji i tak zostaną utworzone tylko raz w ramach jednego JVMa(czasami jednego classLoadera) nawet jesli utworzysz mln obiektów tej klasy.

pamietaj ze statici przynależą do kontekstu klasy a nie instancji/obiektu danej klasy

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