Thread View: pl.comp.lang.java
6 messages
6 total messages
Started by J-23
Wed, 25 May 2022 21:02
Klasa z zagnieżdżonymi obiektami
Author: J-23
Date: Wed, 25 May 2022 21:02
Date: Wed, 25 May 2022 21:02
9 lines
295 bytes
295 bytes
Witam, Grupa chyba 'martwa' ale spróbuje - czy znacie jakieś opisy lub może sami podpowiecie czy jest możliwość napisania własnej klasy którą będzie można zagnieżdżać przez '.' podobnie jak klasę System Chodzi mi o efekt tego typu jak mamy np System.out.print Pozdrawiam J-23
Re: Klasa z zagnieżdżonymi obiektami
Author: Filus
Date: Thu, 26 May 2022 13:18
Date: Thu, 26 May 2022 13:18
32 lines
717 bytes
717 bytes
W dniu 2022-05-25 o 21:02, J-23 pisze: > Witam, > > Grupa chyba 'martwa' ale spróbuje - czy znacie jakieś opisy lub może sami > podpowiecie czy jest możliwość napisania własnej klasy którą będzie można > zagnieżdżać przez '.' podobnie jak klasę System > Chodzi mi o efekt tego typu jak mamy np System.out.print Oczywiście, że tak. Wystarczy, że metoda (lub pole publiczne) zwraca jakiś obiekt a nie void. To System.out.print() to w rzeczywistości odpowiednik: final PrintStream out = System.out; out.print("x"); Jak napiszesz sobie: public class A { public static B b = new B(); } public class B { public void method() {}; } to możesz wszak wołać: A.b.method(); -- Filus
Re: Klasa z zagnieżdżonymi obiektami
Author: J-23
Date: Thu, 26 May 2022 21:53
Date: Thu, 26 May 2022 21:53
45 lines
1378 bytes
1378 bytes
W dniu 26.05.2022 o 13:18, Filus pisze: > W dniu 2022-05-25 o 21:02, J-23 pisze: >> Witam, >> >> Grupa chyba 'martwa' ale spróbuje - czy znacie jakieś opisy lub może >> sami podpowiecie czy jest możliwość napisania własnej klasy którą >> będzie można zagnieżdżać przez '.' podobnie jak klasę System >> Chodzi mi o efekt tego typu jak mamy np System.out.print > > Oczywiście, że tak. Wystarczy, że metoda (lub pole publiczne) zwraca > jakiś obiekt a nie void. > > To System.out.print() to w rzeczywistości odpowiednik: > > final PrintStream out = System.out; > out.print("x"); > > Jak napiszesz sobie: > > public class A { > public static B b = new B(); > } > > public class B { > public void method() {}; > } > > to możesz wszak wołać: > > A.b.method(); > > Dzięki za info do tego doszedłem też :) tylko widzisz pod względem wydajnościowym to wygląda źle a przynajmniej takie mam wrażenie bo wszystkie obiekty są tworzone "od razu" na starcie. W klasie System jest to tworzone w momencie użycia i o ten mechanizm mi chodzi. Z drugiej strony mam świadomość ze klasa System jest specyficzna i podejrzewam że żeby ją tak napisać by obiekt był tworzony w momencie gdy jest potrzebny to 'chyba' odwołać się w specyficzny sposób do maszyny Javy Tak czy inaczej dzięki za zainteresowanie. Pozdrawiam J-23
Re: Klasa z zagnieżdżonymi obiektami
Author: Filus
Date: Mon, 30 May 2022 19:02
Date: Mon, 30 May 2022 19:02
31 lines
717 bytes
717 bytes
W dniu 2022-05-26 o 21:53, J-23 pisze: > Dzięki za info do tego doszedłem też :) tylko widzisz pod względem > wydajnościowym to wygląda źle a przynajmniej takie mam wrażenie bo wszystkie > obiekty są tworzone "od razu" na starcie. W klasie System jest to tworzone w > momencie użycia i o ten mechanizm mi chodzi. Leniwa inicjalizacja („Lazy initialization”) - i działanie na getterach/setterach zamiast bezpośrednio na polach. Najnaiwniejsza implementacja: public class A { private static B b; public static B getB() { if (b == null) { b = new B(); } return b; } } public class B { public void method() {}; } i wołać: A.getB().method(); -- Filus
Re: Klasa z zagnieżdżonymi obiektami
Author: J-23
Date: Tue, 31 May 2022 21:52
Date: Tue, 31 May 2022 21:52
34 lines
890 bytes
890 bytes
W dniu 30.05.2022 o 19:02, Filus pisze: > W dniu 2022-05-26 o 21:53, J-23 pisze: >> Dzięki za info do tego doszedłem też :) tylko widzisz pod względem >> wydajnościowym to wygląda źle a przynajmniej takie mam wrażenie bo >> wszystkie obiekty są tworzone "od razu" na starcie. W klasie System >> jest to tworzone w momencie użycia i o ten mechanizm mi chodzi. > > Leniwa inicjalizacja („Lazy initialization”) - i działanie na > getterach/setterach zamiast bezpośrednio na polach. Najnaiwniejsza > implementacja: > > public class A { > private static B b; > > public static B getB() { > if (b == null) { > b = new B(); > } > > return b; > } > } > > public class B { > public void method() {}; > } > > i wołać: > > A.getB().method(); > > Zgoda ale to jest jeszcze inny sposób działania Pozdrawiam
Re: Klasa z zagnieżdżonymi obiektami
Author: slawek
Date: Tue, 14 Jun 2022 15:39
Date: Tue, 14 Jun 2022 15:39
19 lines
848 bytes
848 bytes
Tak mniej więcej to chodzi o wzorzec projektowy dekorator. Jeżeli nie czytałeś jeszcze o wzorcach projektowych poczytaj sobie książkę lub cokolwiek na ten temat. Jeżeli czytałeś to wiesz o co chodzi. Jak zależy ci na wydajności to cała sprawa w tym aby gdzieś tam gdzieś tam był zwracany obiekt specjalnie stworzony żeby robić to co powinien robić. Czyli później odwołujesz się do metod tego jednego obiektu i nie ma łańcucha wywołań czy jakiś innych spowolnień. Jeżeli jest jakiś łańcuch wywołań to tylko po to żeby skonstruować obiekt a to prawdopodobnie będzie potrzebne tylko raz i dlatego nie będzie w zasadzie opóźniało działania. Leniwa inicjalizacja to jeszcze trochę coś innego ale jak najbardziej przydać się może. ----Android NewsGroup Reader---- http://usenet.sinaapp.com/
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