🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
3 messages
3 total messages Started by tomjas Thu, 19 Jul 2012 10:03
Wywołanie metody niestatycznej bez tworzenia obiektu
#153514
Author: tomjas
Date: Thu, 19 Jul 2012 10:03
17 lines
1474 bytes
Witam.
Od kilku dni uczę się Javy i utknąłem na wywołaniu metody z klasy
abstrakcyjnej bez tworzenia rozszerzenia klasy i obiektu. Dlaczego można
tak:

	Calendar d1 = Calendar.getInstance();
        Date d2 = d1.getTime();

czy też stosując Method Chaining:

	Date d1 = Calendar.getInstance().getTime();

Przecież metoda getTime() nie jest statyczna, więc należałoby utworzyć
najpierw obiekt, a wcześniej klasę rozszerzającą abstrakcyjną klasę
Calendar. Gdzie popełniam błąd w rozumowaniu? Swoją drogą - metoda
getTime() typu Date to inna metoda niż getTime() klasy Date?
Sorry za możliwe nieprawidłowe słownictwo, ale dopiero zaczynam naukę.
Re: Wywołanie metody niestatycznej bez tworzenia obiektu
#153515
Author: Arivald
Date: Thu, 19 Jul 2012 10:37
49 lines
2495 bytes
W dniu 2012-07-19 12:03, tomjas pisze:
> Witam.
> Od kilku dni uczę się Javy i utknąłem na wywołaniu metody z klasy
> abstrakcyjnej bez tworzenia rozszerzenia klasy i obiektu. Dlaczego można
> tak:
>
> 	Calendar d1 = Calendar.getInstance();
>          Date d2 = d1.getTime();
>
> czy też stosując Method Chaining:
>
> 	Date d1 = Calendar.getInstance().getTime();
>
> Przecież metoda getTime() nie jest statyczna, więc należałoby utworzyć
> najpierw obiekt, a wcześniej klasę rozszerzającą abstrakcyjną klasę
> Calendar. Gdzie popełniam błąd w rozumowaniu?

Calendar.getInstance() zwraca konkretny obiekt rozszerzający 
abstrakcyjną klasę Calendar.
A kto i kiedy ten obiekt utworzył to jest nieistotne.

Tu akurat zastosowano getInstance() automatycznego tworzenia obiektu 
kalendarza zgodnego z Twoim systemem i lokalizacją. Zazwyczaj będzie to 
GregorianCalendar, ale w Japoni JapaneseImperialCalendar, a w Tailandii 
BuddhistCalendar.

Możesz to przetestować np tak:

Calendar def = Calendar.getInstance();
Calendar jap = Calendar.getInstance(TimeZone.getDefaultRef(), new
Locale("ja", "JA", "JA");

String classDef = def .getClass().getCanonicalName();
String alassJap = jap.getClass().getCanonicalName();


 > Swoją drogą - metoda
> getTime() typu Date to inna metoda niż getTime() klasy Date?

Oczywiście. Calendar.getTime() zwraca obiekt Date, na którym możesz 
wywołać getTime().

np:
Date timeAsDate = Calendar.getInstance().getTime();
long time = Calendar.getInstance().getTime().getTime();


-- 
Arivald
Re: Wywołanie metody niestatycznej bez tworzenia obiektu
#153516
Author: tomjas
Date: Thu, 19 Jul 2012 13:06
49 lines
2655 bytes
On Thu, 19 Jul 2012 12:37:53 +0200, Arivald wrote:
> W dniu 2012-07-19 12:03, tomjas pisze:
>> Witam.
>> Od kilku dni uczę się Javy i utknąłem na wywołaniu metody z klasy
>> abstrakcyjnej bez tworzenia rozszerzenia klasy i obiektu. Dlaczego można
>> tak:
>>
>> 	Calendar d1 = Calendar.getInstance();
>>          Date d2 = d1.getTime();
>>
>> czy też stosując Method Chaining:
>>
>> 	Date d1 = Calendar.getInstance().getTime();
>>
>> Przecież metoda getTime() nie jest statyczna, więc należałoby utworzyć
>> najpierw obiekt, a wcześniej klasę rozszerzającą abstrakcyjną klasę
>> Calendar. Gdzie popełniam błąd w rozumowaniu?
>
> Calendar.getInstance() zwraca konkretny obiekt rozszerzający 
> abstrakcyjną klasę Calendar.
> A kto i kiedy ten obiekt utworzył to jest nieistotne.
>
> Tu akurat zastosowano getInstance() automatycznego tworzenia obiektu 
> kalendarza zgodnego z Twoim systemem i lokalizacją. Zazwyczaj będzie to 
> GregorianCalendar, ale w Japoni JapaneseImperialCalendar, a w Tailandii 
> BuddhistCalendar.
>
> Możesz to przetestować np tak:
>
> Calendar def = Calendar.getInstance();
> Calendar jap = Calendar.getInstance(TimeZone.getDefaultRef(), new
> Locale("ja", "JA", "JA");
>
> String classDef = def .getClass().getCanonicalName();
> String alassJap = jap.getClass().getCanonicalName();
>
>
> > Swoją drogą - metoda
>> getTime() typu Date to inna metoda niż getTime() klasy Date?
>
> Oczywiście. Calendar.getTime() zwraca obiekt Date, na którym możesz 
> wywołać getTime().
>
> np:
> Date timeAsDate = Calendar.getInstance().getTime();
> long time = Calendar.getInstance().getTime().getTime();
>
>
Dzięki za odpowiedź. Trochę się to zaczyna wreszcie klarować:)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads