🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
4 messages
4 total messages Started by J-23 Fri, 06 Dec 2013 16:39
Jak to ugryźć jedną metodą -Java/Delphi
#153933
Author: J-23
Date: Fri, 06 Dec 2013 16:39
34 lines
2543 bytes
Witam,
Na wstępie zaznaczam że niżej opisany problem będę chciał rozwiązać w 
Javie ale że szukam sposobu/podpowiedzi rozwiązania problemu, puszczę to 
także na grupę Delphi (Mam wrażenie że więcej osób ją przegląda)

Piszę ogólnikowo ale będę się starał by było zrozumiale dla wszystkich

Mam klasę która jest pojemnikiem na inne klasy (które nie mają jednego 
wspólnego przodka - złośliwi powiedzą ze jest klasa Object :))

teraz chciałbym w klasie "pojemnik" zrobić jedną metodę która doda mi te 
poszczególne objekty (nic trudnego)

bo można by utworzyć metodę: pojemnik.add(Object object) no i 
pozamiatane mamy jedną metodę która doda elementy do pojemnika *dla 
wszystkich*, Ja dodatkowo chciałbym kontrolować co wpada do tego 
pojemnika by reagować na niektóre elementy.

Tutaj przychodzą mi do głowy 2 rozwiązania:
1. użyć *instanceof* w taki sposób:
if (object instanceof nazwaklasy){...}
2. Wzorzec projektowy: Chain of Responsibility

teraz tak co mogę, a czego nie mogę :)
Piszę w GWT tam nie ma czegoś takiego jak *instanceof*. Gdyby był nie 
było by problemu :) Natomiast co do użycia wzorca którego wymieniłem 
fajnie by się sprawdzał ale wymagałby każdorazowo dodania nowego obiektu 
jeśli by taki powstał, a zakładam że powstaną choćby przez dziedziczenie 
tych elementów które już mogą istnieć w pojemniku

i teraz to co mnie zastanawia to jak to *obejść* by jeśli elementy będą 
np dziedziczone by ich nie dodawać do implementacji wzorca?

Pozdrawiam
Re: Jak to ugryźć jedną metodą -Java/Delphi
#153934
Author: Piotr Rezmer
Date: Fri, 06 Dec 2013 17:06
13 lines
1220 bytes
J-23 pisze:

> Piszę w GWT tam nie ma czegoś takiego jak *instanceof*. Gdyby był nie
> było by problemu :)

A jak to się ma do informacji w wątku:
https://groups.google.com/forum/#!topic/google-web-toolkit/YQdrrkxOAuA


-- 
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: Jak to ugryźć jedną metodą -Java/Delphi
#153935
Author: J-23
Date: Fri, 06 Dec 2013 18:21
38 lines
2012 bytes
W dniu 06.12.2013 18:06, Piotr Rezmer pisze:
> J-23 pisze:
>
>> Piszę w GWT tam nie ma czegoś takiego jak *instanceof*. Gdyby był nie
>> było by problemu :)
>
> A jak to się ma do informacji w wątku:
> https://groups.google.com/forum/#!topic/google-web-toolkit/YQdrrkxOAuA
>
>
Sprawdzałem to wcześniej ale to nie działa. (Może coś ja knocę, już sam 
nie wiem)

Why not just use the native instanceof?

Button b = new Button();
if (b instanceof Widget) {
   /* the code should drop in here */
}




ale dałem najprostszy kod jaki się dało i nic...

     public boolean add(Widget widget) {
         if (widget instanceof Widget) {
             System.out.println("WIDGET");
             return super.add(widget);
         } else {
             super.add(widget);
         }
         return false;
     }

powinien być napis "WIDGET" jesli się zgadza a nie ma

Pozdrawiam
Re: Jak to ugryźć jedną metodą -Java/Delphi
#153936
Author: splatch
Date: Mon, 10 Feb 2014 08:41
78 lines
2643 bytes
W GWT instanceof może być z powodzeniem emulowany ponieważ JS ma operator typeof.

W dniu piątek, 6 grudnia 2013 19:21:29 UTC+1 użytkownik J-23 napisał:
> W dniu 06.12.2013 18:06, Piotr Rezmer pisze:
> 
> > J-23 pisze:
> 
> >
> 
> >> Piszę w GWT tam nie ma czegoś takiego jak *instanceof*. Gdyby był nie
> 
> >> było by problemu :)
> 
> >
> 
> > A jak to się ma do informacji w wątku:
> 
> > https://groups.google.com/forum/#!topic/google-web-toolkit/YQdrrkxOAuA
> 
> >
> 
> >
> 
> Sprawdzałem to wcześniej ale to nie działa. (Może coś ja knocę, już sam 
> 
> nie wiem)
> 
> 
> 
> Why not just use the native instanceof?
> 
> 
> 
> Button b = new Button();
> 
> if (b instanceof Widget) {
> 
>    /* the code should drop in here */
> 
> }
> 
> 
> 
> 
> 
> 
> 
> 
> 
> ale dałem najprostszy kod jaki się dało i nic...
> 
> 
> 
>      public boolean add(Widget widget) {
> 
>          if (widget instanceof Widget) {
> 
>              System.out.println("WIDGET");
> 
>              return super.add(widget);
> 
>          } else {
> 
>              super.add(widget);
> 
>          }
> 
>          return false;
> 
>      }
> 
> 
> 
> powinien być napis "WIDGET" jesli się zgadza a nie ma
> 
> 
> 
> Pozdrawiam
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