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
Author: tomjas
Date: Thu, 19 Jul 2012 10:03
Date: Thu, 19 Jul 2012 10:03
17 lines
1474 bytes
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
Author: Arivald
Date: Thu, 19 Jul 2012 10:37
Date: Thu, 19 Jul 2012 10:37
49 lines
2495 bytes
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
Author: tomjas
Date: Thu, 19 Jul 2012 13:06
Date: Thu, 19 Jul 2012 13:06
49 lines
2655 bytes
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