Wpis z mikrobloga

  • 1
A tak mnie naszło ( ͡º ͜ʖ͡º) jeśli mam statyczną klasę, to instancja jej jest tak jakby tworzona przy odpalaniu się programu? W związku z tym jak to działa? Jeśli mam kontruktor, to jest on wywoływany (tak wiem, że inaczej się wywoła defaultowy)? Aktualnie nie mam dostępu do kompa, a później zapomnę XD
#java #naukaprogramowania
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@TMBRK: jeśli nie tworzysz instancji to kod z konstruktora nie jest wykonywany, ale zawsze przed konstruktorami jeśli są to polecą jeszcze bloki statyczne (jak chcesz zainicjalizować jakąś zmienną statyczną czymś bardziej skomplikowanym niż "static public int dupa=123" to możesz tam je umieścić, będzie to brzydkie - jak wszystko co statyczne ( ͡° ͜ʖ ͡°), i może spowolnić start aplikacji w razie upchnięcia tam czegoś kosztownego -
  • Odpowiedz
@TMBRK: instancja statycznej klasy nie jest tworzona przy odpalaniu programu ale przy pierwszym odniesieniu do czegokolwiek w owej statycznej klasie - krótko mówiąc, dopiero wtedy kiedy jest potrzebna. Jeśli masz w kodzie statyczną klasę i nigdy nigdzie jej nie używasz to jej instancja nie zostanie stworzona.
  • Odpowiedz
instancja statycznej klasy nie jest tworzona przy odpalaniu programu ale przy pierwszym odniesieniu do czegokolwiek w owej statycznej klasie - krótko mówiąc, dopiero wtedy kiedy jest potrzebna. Jeśli masz w kodzie statyczną klasę i nigdy nigdzie jej nie używasz to jej instancja nie zostanie stworzona.


@Myzreal: Bzdury!
  • Odpowiedz
@63274682374: Sam jesteś bzdurą.

A class or interface type T will be initialized immediately before the first occurrence of any one of the following:

- T is a class and an instance of T is
  • Odpowiedz
@asunez:
@Myzreal:
Instancja klasy to inaczej obiekt klasy. W Javie obiekt danej klasy (obojętnie czy statycznej czy nie) standardowo tworzymy przy użyciu operatora new (są też inne sposoby, ale nie o tym teraz mówimy) wskazując konstruktor, który ma zostać wywołany.
Pomyliłeś ładowanie klasy i inicjalizację jej pól statycznych z tworzeniem obiektu klasy - a o tym było pytanie.

PS. Twoje wypowiedzi są kolejnym przykładem na to że certy
  • Odpowiedz
@Myzreal: Swoją drogą to też trzeba być nieźle "zacertyfikowanym", żeby napisać coś z podstawowymi błędami i jeszcze próbować udowodnić poprawność wypowiedzi cytatami z JLS, które mówią coś wprost przeciwnego.

Pomijając już ten błąd odnośnie terminologii - instancja, inicjalizacja... oraz to co jest następstwem czego.
  • Odpowiedz
@63274682374:

Odwołanie do statycznego finalnego pola

Nie, do wartości constant - czyli final static i typu prymitywnego lub stringa - bo te są inlinowane przy kompilacji więc w rzeczywistości nie ma odwołania do klasy.

A tak to pojawia się problem że "instancja klasy" użyte przez @Myzreal odwołuje się do instancji klasy "Class", więc jak by nie patrzeć jest to poprawne określenie tylko mylące bo nie wiesz czy chodzi
  • Odpowiedz
Nie, do wartości constant - czyli final static i typu prymitywnego lub stringa - bo te są inlinowane przy kompilacji więc w rzeczywistości nie ma odwołania do klasy.


@GotoFinal: Jak najbardziej, dzięki za sprostowanie.

A tak to pojawia się problem że "instancja klasy" użyte przez @Myzreal odwołuje się do instancji klasy "Class", więc jak by nie patrzeć jest to poprawne określenie tylko mylące bo nie wiesz czy chodzi o jakąś klasę czy konkretne klasę klasy. Bo jednak X.class daje nam instancje klasy (
  • Odpowiedz