• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Działanie Calendar.getInstance();

Object Storage Arubacloud
0 głosów
399 wizyt
pytanie zadane 20 grudnia 2017 w Java przez rubesom Obywatel (1,690 p.)

Hej,

Jak mam rozumimeć ten kod:
 

Calendar C1 = Calendar.getInstance();

Rozumiem, że jest to wywołanie statycznej metody klasy Calendar ale już w ten sam sposób nie mogę wywołać dla innej klasy jakiejś metody statycznej, np coś takiego:

public class Obiekty 
{
	public static void odtwarzacz2(String t)
	{
		System.out.println(t);
	}
}

 

public class Testy 
{

	public static void main(String[] args) 
	{
Obiekty O2 = Obiekty.odtwarzacz2("test2");
    }

Już nie mogę wywołać mojej statycznee metody odtwarzacz2. Co źle zrozumiałem?

2 odpowiedzi

0 głosów
odpowiedź 20 grudnia 2017 przez Wiciorny Ekspert (269,590 p.)
edycja 20 grudnia 2017 przez Wiciorny

Nie możesz wywołać na obiekcie, bo Obiekty to klasa u Ciebie, a klasa nie jest statyczna... utwórz instancje najpierw. tak jak tutaj ...

Calendar dziala bo zauważ ma zdefiniowany konstruktor zobacz co robi w dokumentacji :)

Po drugie... twoja funkcja jest void- a ty przypisujesz jej zwracanie typu obiekt?  [ Obiekty O2 ] .

komentarz 20 grudnia 2017 przez rubesom Obywatel (1,690 p.)
Ale jak to działa, że kiedy na rzecz zmiennej C1 wywołam statyczną metode to dalej mogę już wywoływac dla tej zmiennej niestatyczne metody?
komentarz 20 grudnia 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Aby kożystać z metod statycznych nie potrzebna jest instancja klasy ani nawet klasa statyczna.
komentarz 20 grudnia 2017 przez Wiciorny Ekspert (269,590 p.)
instancja jest potrzebna :) ...  i zawsze jest bo to z definicji tyczy się metody statycznej na rzecz klasy, nie musisz jej deklarować, pisać ale ona i tak jest tworzona przez JVM automatycznie przy wywołaniu metody statycznej nawet na rzecz this- lub niczego.
komentarz 21 grudnia 2017 przez Tomasz90 Nałogowiec (25,140 p.)
To co napisałeś nie jest prawdą. Instancja klasy to jest konkretny obiekt(egzemplarz) danej klasy, a więc tworzona jest przeważnie za pośrednictwem konstruktora, metody fabrykującej itp. JVM jedynie wczytuje konkretne klasy w momencie ich pierwszego użycia, a nie że tworzy ich instancje automatycznie. Jest tak jak napisał Mateusz
komentarz 21 grudnia 2017 przez Wiciorny Ekspert (269,590 p.)

włącz sobie debugger i sprawdź co się dzieje podczas utworzenia klasy statycznej w JVM :)

Albo użycia metod: szczególnie takich które nie tworzysz operatorem new jak 

	
Calendar C1 = Calendar.getInstance();

wtedy zrozumiesz. Klasa sama w sobie jest instancją :) - doc. Oracle.

komentarz 21 grudnia 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Mam wrażenie że ta dyskusja jest bezcelowa ponieważ dotyczy dwóch innych rzeczy.

Java jako język nie wymaga obiektu danej klasy aby móc używać metod i zmiennych statycznych. Ale sama wirtualna maszyna Javy tworzy obiekt klasy Class za każdym razem gdy ładowana jest klasa przez class loader. Ale jedno tyczy się języka a drugie specyfiki platformy.
komentarz 21 grudnia 2017 przez Tomasz90 Nałogowiec (25,140 p.)
Nie wiem kiedy ja coś pisałem o klasach statycznych, ale już to pominę.

Calendar.getInstance() wywołuje akurat konstruktor, wystarczy kod tej klasy przejrzeć.

Gdzie jest w dokumentacji Oracle'a to co napisałeś? podaj link
0 głosów
odpowiedź 20 grudnia 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Prawdopodobnie odtwarzacz2 nie zadziała Ci z tego powodu że próbujesz przypisać wynik działania tej metody do O2.
A twoja metoda statyczna jest void. Czyli nie zwraca nic

Podobne pytania

0 głosów
1 odpowiedź 1,846 wizyt
pytanie zadane 21 maja 2016 w PHP przez Pampi Początkujący (390 p.)
0 głosów
0 odpowiedzi 277 wizyt
pytanie zadane 28 marca 2022 w PHP przez nadkonduktor Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 278 wizyt

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...