abstract + final?

abstract + final?
ShookTea
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 6 lat
  • Lokalizacja:Wrocław
  • Postów:629
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/


bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
2

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
ShookTea
private Klasa(). Wiedziałem, że to będzie banalne. Dzięki wielkie!
AA
  • Rejestracja:około 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:15
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ą;

msm
Akurat w tym przypadku nikt wiele nie traci z powodu braku źródła (singletony są wszędzie w sieci, a wkład piszącego do tego konkretnego singletona niski). Ale ogólnie racja.
KE
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 7 lat
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

ShookTea
Może się źle wysłowiłem. Po prostu chodzi mi o to, że tworzę mini-bibliotekę do własnych celów i chciałbym uniemożliwić tworzenie obiektu danej klasy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.