Thread View: pl.comp.lang.java
12 messages
12 total messages
Started by J-23
Fri, 02 Sep 2011 12:06
Automat ładowania klasy
Author: J-23
Date: Fri, 02 Sep 2011 12:06
Date: Fri, 02 Sep 2011 12:06
24 lines
1748 bytes
1748 bytes
Witam, Może ktoś mi podpowie jak zrobić coś takiego: Mam klasę A która jest klasą bazową i teraz chcę w innej klasie metodę która będzie sprawdzała czy istnieje klasa pochodna od klasy A która to będzie miała np nazwę AEdit i będzie mi ją z automatu (jeśli istnieje) robiła pewne rzeczy np otwierała się. W skrócie chcę napisać pewien automat który pozwoli mi na uniknęcię pisania za każdym razem New AEdit tylko jeśli (klasa o podanej nazwie) jest to poprostu się wykonuje. Może to i banalne dla doświadczonego javowca ale ja jakoś nie mogę sobię z tym dać rady. domyślam się że trzeba będzie skorzystać z obiektu: ClassLoader oraz File Jeszcze jedno żeby tej klasy AEdit szukał po za pakietem gdzie jest klasa macierzysta czyli klasa A Pozdrawiam J-23
Re: Automat ładowania klasy
Author: Jacek Czerwinski
Date: Fri, 02 Sep 2011 15:44
Date: Fri, 02 Sep 2011 15:44
9 lines
1077 bytes
1077 bytes
W dniu 2011-09-02 14:06, J-23 pisze: > > domyślam się że trzeba będzie skorzystać z obiektu: > ClassLoader oraz File jeszcze chyba Class.forname ale .... co właściwie chcesz zrobić? Jakies pluginy itp? nie jest to jasne ...
Re: Automat ładowania klasy
Author: Jacek Czerwinski
Date: Fri, 02 Sep 2011 15:48
Date: Fri, 02 Sep 2011 15:48
15 lines
1513 bytes
1513 bytes
W dniu 2011-09-02 17:44, Jacek Czerwinski pisze: > W dniu 2011-09-02 14:06, J-23 pisze: > >> >> domyślam się że trzeba będzie skorzystać z obiektu: >> ClassLoader oraz File > jeszcze chyba Class.forname > > ale .... co właściwie chcesz zrobić? Jakies pluginy itp? nie jest to > jasne ... Dla groovy'iego, żeby stworzyć więzienie (jail) zrobiłem swój class loader (akurat to jest tam fajnie udokumentowane). Jak pakiet klasy mi nie pasował (np. pachniał plikami a to chciałem przyblokować) rzucałem wyjątek. Stosunkowo obszerne to było (sporo metod przedziedziczyłem, część może nadmiernie), ale nie było trudne.
Re: Automat ładowania klasy
Author: J-23
Date: Fri, 02 Sep 2011 17:26
Date: Fri, 02 Sep 2011 17:26
29 lines
2074 bytes
2074 bytes
W dniu 2011-09-02 17:44, Jacek Czerwinski pisze: > W dniu 2011-09-02 14:06, J-23 pisze: > >> >> domyślam się że trzeba będzie skorzystać z obiektu: >> ClassLoader oraz File > jeszcze chyba Class.forname > > ale .... co właściwie chcesz zrobić? Jakies pluginy itp? nie jest to > jasne ... > > Mamy klasę A z której będą tworzone klasy Edycyjne z przyrostkiem Edit np dla klasy Klient, powstanie Klasa edycjna KlientEdit i teraz mam jeszcze jedno okienko gdzie będzie akcja Edytuj m.in. i teraz zeby za każdym razem nie podpisywać akcji dla konkretnych klas chciałem tu zbudować to tak że jeżeli jest klasa o nazwie KlientEdit dla klasy Klient to odrazu ją otwiera (bez pisania już czegokolwiek) Mam to zrobione w Delphi (mogę podrzucić fragment) a chodzi o rozwiązanie dla Ext-GWT W Sumie chodzi mi o bardzo prostą rzecz tylko jako,ś nie moge zatrzybić jak zrobić coś ala tak: KlientEdit KE new KlientEdit poprostu te nazwy podstawiać z automatu Pozdrawiam i dzięki za pomoc
Re: Automat ładowania klasy
Author: Jacek Czerwinski
Date: Fri, 02 Sep 2011 17:39
Date: Fri, 02 Sep 2011 17:39
9 lines
1175 bytes
1175 bytes
W dniu 2011-09-02 19:26, J-23 pisze: > Mamy klasę A z której będą tworzone klasy Edycyjne z przyrostkiem Edit > np dla klasy Klient, powstanie Klasa edycjna KlientEdit Yyyy???? > Mam to zrobione w Delphi (mogę podrzucić fragment) To dużo tłumaczy, niestety ...
Re: Automat ładowania klasy
Author: Tomek Łabuz
Date: Fri, 02 Sep 2011 17:50
Date: Fri, 02 Sep 2011 17:50
18 lines
1854 bytes
1854 bytes
> Mamy klasę A z której będą tworzone klasy Edycyjne z przyrostkiem Edit
> np dla klasy Klient, powstanie Klasa edycjna KlientEdit i teraz mam
> jeszcze jedno okienko gdzie będzie akcja Edytuj m.in. i teraz zeby za
> każdym razem nie podpisywać akcji dla konkretnych klas chciałem tu
> zbudować to tak że jeżeli jest klasa o nazwie KlientEdit dla klasy
> Klient to odrazu ją otwiera (bez pisania już czegokolwiek)
>
> Mam to zrobione w Delphi (mogę podrzucić fragment) a chodzi o
> rozwiązanie dla Ext-GWT
ale wiesz, że środowiskiem uruchomieniowym GWT o ile mnie pamięć nie
myli nie jest jvm, więc bez dodatkowej kompilacji to się pewnie nie
obejdzie....
w jvm jeśli bardzo bym chciał coś takiego zrobić jak opisujesz
kombinowałbym z czymś w rodzaju Class.forName("nazwa klasy"+suffix) - i
tu coś tam wywoływał
ale czy jest coś takiego w gwt... to niech się spece od tego wypowiedzą :)
Re: Automat ładowania klasy
Author: J-23
Date: Fri, 02 Sep 2011 19:08
Date: Fri, 02 Sep 2011 19:08
25 lines
2293 bytes
2293 bytes
W dniu 2011-09-02 19:50, Tomek Łabuz pisze:
>
>> Mamy klasę A z której będą tworzone klasy Edycyjne z przyrostkiem Edit
>> np dla klasy Klient, powstanie Klasa edycjna KlientEdit i teraz mam
>> jeszcze jedno okienko gdzie będzie akcja Edytuj m.in. i teraz zeby za
>> każdym razem nie podpisywać akcji dla konkretnych klas chciałem tu
>> zbudować to tak że jeżeli jest klasa o nazwie KlientEdit dla klasy
>> Klient to odrazu ją otwiera (bez pisania już czegokolwiek)
>>
>> Mam to zrobione w Delphi (mogę podrzucić fragment) a chodzi o
>> rozwiązanie dla Ext-GWT
>
> ale wiesz, że środowiskiem uruchomieniowym GWT o ile mnie pamięć nie
> myli nie jest jvm, więc bez dodatkowej kompilacji to się pewnie nie
> obejdzie....
> w jvm jeśli bardzo bym chciał coś takiego zrobić jak opisujesz
> kombinowałbym z czymś w rodzaju Class.forName("nazwa klasy"+suffix) - i
> tu coś tam wywoływał
> ale czy jest coś takiego w gwt... to niech się spece od tego wypowiedzą :)
>
jest coś takiego w GWT ale mam prosbę odejć myślą od GWT póki co i
jakbyś mi mógł opisać fragment jakbyś to zrobiła stosując czystą jave.
Bede zobowiązany
Pozdrawiam
Re: Automat ładowania klasy
Author: Tomek Łabuz
Date: Fri, 02 Sep 2011 19:34
Date: Fri, 02 Sep 2011 19:34
18 lines
2054 bytes
2054 bytes
> jakbyś mi mógł opisać fragment jakbyś to zrobiła prosiłbym o zdecydowanie się, bo nie wiem czy ubrać bokserki czy stringi :) ale w czym problem z tym Class.forName - znajdziesz to pewnie w każdej ksiażce skoro znam klasę bazową to za pomocą Klasa.getClass().getName() mam jej nazwę to teraz mogę za pomocą Class.forName(nazwaKlasy+"Edit") dostać klasę (obiekt klasy Class) reprezentujący oczekiwaną przeze mnie klasę. jeśli nie ma jej w zasięgu to wyleci wyjątek, oczywiście zakładam jakąś konwencję nazewniczą mając klasę mogę za pomocą refleksji powołać do życia obiekt takim czy innym konstruktorem, zrzutować na jakiś bazowy interfejs jeśli jest i już mogę wywoływać metody jak nie mam interfejsu wspólnego zawsze pozostaje mi jeszcze refleksja do wywołania dowolnych metod - do poczytania API klasy Class i pokrewnych nie wiem czy to dobre rozwiązanie dla Twojego problemu i czy w ogóle to jest dobre rozwiązanie ale z Twojego opisu wyszło mi, że czegoś takiego chyba szukasz, ale mogę się mylić
Re: Automat ładowania klasy
Author: Jacek Czerwinski
Date: Fri, 02 Sep 2011 19:42
Date: Fri, 02 Sep 2011 19:42
18 lines
1829 bytes
1829 bytes
W dniu 2011-09-02 21:34, Tomek Łabuz pisze: >> jakbyś mi mógł opisać fragment jakbyś to zrobiła > > prosiłbym o zdecydowanie się, bo nie wiem czy ubrać bokserki czy stringi :) > ale w czym problem z tym Class.forName - znajdziesz to pewnie w każdej > ksiażce > skoro znam klasę bazową to za pomocą Klasa.getClass().getName() mam jej > nazwę to teraz mogę za pomocą Class.forName(nazwaKlasy+"Edit") dostać .... > z Twojego opisu wyszło mi, że czegoś takiego > chyba szukasz, ale mogę się mylić Dla mnie to jakiś koszmar koncepcyjny, powielenie siłowego i nieobiektowego rozwiązania z D. jeśli obiekt (o ile odczytuję powoływanie 'klas czegoś tam') ma coś wykonywać lub nie, pasuje to do metody wirtualnej być może pustej, być może w javie można coś zapisać w oparciu o klasy anonimowe.
Re: Automat ładowania klasy
Author: Boguś
Date: Fri, 02 Sep 2011 19:44
Date: Fri, 02 Sep 2011 19:44
15 lines
1300 bytes
1300 bytes
Dnia 02-09-2011 o 14:06:21 J-23 <baczeklu@poczta.fm> napisał(a): > Witam, > > Może ktoś mi podpowie jak zrobić coś takiego: > > Mam klasę A która jest klasą bazową i teraz chcę w innej klasie metodę > która będzie sprawdzała czy istnieje klasa pochodna od klasy A która to > będzie miała np nazwę AEdit i będzie mi ją z automatu (jeśli istnieje) > robiła pewne rzeczy np otwierała się. http://stackoverflow.com/questions/492184/how-do-you-find-all-subclasses-of-a-given-class-in-java -- Boguś
Re: Automat ładowania klasy
Author: Tomek Łabuz
Date: Fri, 02 Sep 2011 19:59
Date: Fri, 02 Sep 2011 19:59
23 lines
2281 bytes
2281 bytes
> Dla mnie to jakiś koszmar koncepcyjny, powielenie siłowego i > nieobiektowego rozwiązania z D. > Jest, ale nauczyłem się, że nie ma co uszczęśliwiać kogoś na siłę :) Najpierw musi się sam przekonać, że wdepnął w .... (wybrać sobie coś) Z przypadkami przepisywania rozwiązań z D w sposób 1:1 to nie pierwszy mój kontakt, zazwyczaj kończyło się - "my tak robiliśmy i tak jest dobrze", nie zawsze na szczęście i te przypadki skończyły się dobrze, te pierwsze w końcu też ale dłużej to trwało :) A swoją drogą D to chyba dobry przykład jak IDE + przeświadczenie o tym, że można wszystko wyklikać powoduje, że nawet sami użytkownicy D tracili świadomość, że na zapleczu jest przecież obiektowy język do dyspozycji i można w nim sporo napisać a nie tylko wyklikać :) > jeśli obiekt (o ile odczytuję powoływanie 'klas czegoś tam') ma coś > wykonywać lub nie, pasuje to do metody wirtualnej być może pustej, być > może w javie można coś zapisać w oparciu o klasy anonimowe. Jest około 22 i o tej porze wymyślać architekturę programu o którym nie wiem w zasadzie nic nie bardzo mi się chce szczególnie, że mam swoje zagwozdki :) Ale czyń honory jakby coś :)
Re: Automat ładowania klasy
Author: Marcin Biegan
Date: Sat, 03 Sep 2011 22:20
Date: Sat, 03 Sep 2011 22:20
30 lines
2269 bytes
2269 bytes
W dniu 2011-09-02 19:26, J-23 pisze: > Mamy klasę A z której będą tworzone klasy Edycyjne z przyrostkiem Edit > np dla klasy Klient, powstanie Klasa edycjna KlientEdit i teraz mam > jeszcze jedno okienko gdzie będzie akcja Edytuj m.in. i teraz zeby za > każdym razem nie podpisywać akcji dla konkretnych klas chciałem tu > zbudować to tak że jeżeli jest klasa o nazwie KlientEdit dla klasy > Klient to odrazu ją otwiera (bez pisania już czegokolwiek) > > Mam to zrobione w Delphi (mogę podrzucić fragment) a chodzi o > rozwiązanie dla Ext-GWT > > > W Sumie chodzi mi o bardzo prostą rzecz tylko jako,ś nie moge zatrzybić > jak zrobić coś ala tak: > > KlientEdit KE new KlientEdit poprostu te nazwy podstawiać z automatu Do czego podstawić z automatu? Skąd ma wiedzieć, że chodzi o 'klient'? Napisz większy kawałek kodu bo chyba nikt nie bardzo zrozumiał. co do GWT: - nie ma ani Classloader, ani Class.forName - znaleźć wszystkie podklasy możesz na etapie kompilacji (patrz: generators) - może wystarczą ci edytory? http://code.google.com/webtoolkit/doc/latest/DevGuideUiEditors.html -- pozdrawiam Marcin Biegan
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