|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 33
|
[JAVA] istanziazione interfacce???
Come e' possibile che il metodo doGet della classe Servlet di Java implementi le interfacce HttpServletResponse e HttpServletRequest, se in java non e' permessa l'istanziazione di interfacce?
Mi spiego meglio HttpServletResponse e HttpServletRequest sono 2 interfacce e il metodo doGet le riceve come parametri... Perche' succede?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Non conosco il problema specifico ma probabilmente esistono diverse implementazioni delle dette interfacce (oppure devi implementartele tu)
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Probabilmente avresti dovuto chiederti: "Come mai il metodo doGet della classe Servlet richiede in ingresso un interfaccia HttpServletResponse o un interfaccia HttpServletRequest, se sono oggetti che non possono essere istanziati?" un metodo che richiede come input una interfaccia semplicemente richiede un qualsiasi oggetto che implementa quella interfaccia. Basta che gli passi un qualsiasi oggetto che implementi una di quelle due interfaccie, e tutto dovrebbe compilare (e funzionare).
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
sia A un'interfaccia e sia X.m(A) un metodo della classe X, che richiede come parametro un oggetto di tipo A. Ora, essendo A un'interfaccia non può, come sai, esistere, a rigore, un'istanza di A. Ma se esiste una classe B che implementa A, allora un'istanza b di B è anche un oggetto di tipo A. dichiarare un metodo che riceve come parametri oggetti dotati di una certa interfaccia permette di generalizzare il metodo stesso: esso potrà manipolare dati di qualunque tipo fin tanto che questi avranno tutte le proprietà necessarie affinché detto metodo possa manipolarli. Tutte le differenze tra dati di tipo diverso che siano irrilevanti al fine di poter essere manipolati dal metodo c vengono così isolate. Detto altrimenti, se il metodo c, per lavorare con un dato, ha bisogno di conoscere un certo insieme di proprietà del dato stesso, obbligare c ha conoscere proprietà irrilevanti restringe il suo utilizzo in modo irragionevole. Usare un'interfaccia per specificare le proprietà di un parametro di c è un modo per generalizzare il suo utilizzo. Se ho scritto cose per te ovvie, allora ho frainteso la tua domanda: me ne scuso |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 33
|
ok, grazie ragazzi!!!
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ma è appunto quello il bello del "polimorfismo". A te non deve interessare che tipo di oggetti (e di quali classi) ti vengono passati nel doGet. A te interessa solo sapere che uno è-un HttpServletRequest e l'altro è-un HttpServletResponse.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:52.




















