iohnny
Mirki, mam pytanie dotyczące generyków.

https://pastebin.com/ip3QiiS8

Czy takie rzutowanie na typ generyczny jest zgodne z zasadami dobrego programowania, czy są jakieś "ale" i muszę zmienić koncepcję? Chodzi mi o metodę getParameter().

#naukaprogramowania #java
  • Najlepsze
  • Wszystkie komentarze
sorhu
sorhu
2
@iohnny
Skoro rzutujesz, to zawęź typ genetyczny.

public class BlockingStrategy
sorhu
sorhu
1
@iohnny
Bardzo brzydko to wygląda. Co to w ogóle jest to SomeClass?
sorhu
sorhu
1
*generyczny (⌐ ͡■ ͜ʖ ͡■)
sorhu
sorhu
0
@iohnny
Ale taguj #java.
sorhu
sorhu
0
@sorhu
Gdzie jest zdefiniowana metoda getField?
iohnny
iohnny Autor
0
@sorhu: jakaś klasa stworzona "na szybko", żeby pokazać rzutowanie na F.
iohnny
iohnny Autor
0
@sorhu: Chodzi mi o samo rzutowanie. W sumie nie jest istotna implementacja getField.
sorhu
sorhu
0
@iohnny

W sumie nie jest istotna implementacja getField.


Nie pytałem o implementację.
iohnny
iohnny Autor
0
@sorhu: metoda zdefiniowana jest w klasie SomeClass, ale to też chyba nie jest ważne(?)

Skoro rzutujesz, to zawęź typ genetyczny.


Dzięki za radę. Rozumiem, że to tylko trochę poprawi wygląd kodu i lepiej od nowa przemyśleć całą konstrukcję :P
K.....l
K.....l
@iohnny: po co ci generyk jak rzutujesz i tak na te klase? Nie lepiej przekazywac te SomeClass?
iohnny
iohnny Autor
0
@Kuriozal Nie, opieram się na wzorcu projektowym strategia, a BlockingStrategy jest tylko jedną z implementacji interfejsu (chociaż w kodzie, który tu wkleiłem nie jest to pokazane). W różnych implementacjach metoda getParameter może zwracać różne typy.
iohnny
iohnny Autor
0
@Kuriozal : chociaż muszę jeszcze przemyśleć całą koncepcję ( ͡º ͜ʖ͡º)
another_throwaway23
@iohnny unikaj rzutowania na sztywno bo dostaniesz ClassCastException.
w przykładzie z linka generyki nie mają sensu. bo nie parameyryzuja w żaden sposób klasy BlockingStrategy. zauważ że metoda getParameter nie jest w żaden sposób powiązana ze swoją klasą i mogłaby być równie dobrze statyczna metoda w jakiejś klasie narzedziowej.
iohnny
iohnny Autor
0
@another_throwaway23

zauważ że metoda getParameter nie jest w żaden sposób powiązana ze swoją klasą i mogłaby być równie dobrze statyczna metoda w jakiejś klasie narzedziowej.


metoda nie jest jeszcze skończona. Będzie używała blockingParameter.