Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78

    interfacce generiche

    Ciao!

    Qc mi sa dire come faccio a implementare il seguente metodo genrerico definito in un'interfaccia?
    Grazie!

    Codice PHP:
        void initialize(Subject subjectCallbackHandler callbackHandler,
                
    Map<String,?> sharedState,
                Map<String,?> options); 
    (chiaramente nn voglio l'implementazione in se' ma la signatura del metodo che implementa quello generico...)

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    public void initialize(Subject ...
    :master:

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    Ok scusate nn ho specificato bene il mio problema. Ci riprovo con un esempio.
    ho un'interfaccia definita cosi':

    Codice PHP:
    package test;

    import java.util.Map;

    public interface 
    testinterface {
      
      public 
    void testmethod(Map<String,?> s);

    e voglio implementarla nella mia classe Test, in questa maniera:

    Codice PHP:

    package test
    ;

    import java.util.Map;

    public class 
    mytest implements testinterface{

     public 
    mytest(){};
     
     public 
    void testmethod(Map<String,?> s){
       s.put("ciao",(Object)new Integer(5));
     }



    il problema è che che il secondo argomento del metodo put non viene mai accettato dal compilatore, a meno che io metta null. Ora, esiste una soluzione per aggirare il problema o l'unica è cambiare l'implementazione dell'interfaccia?

    grazieee!

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Nell'interfaccia dichiari la Map con wildcard (?), nell'implementazione dovrai andare a dire quella wildcard che cosa sarà (nel tuo caso, suppongo un Integer)... un altra implementazione dell'interfaccia potrebbe avere quella wildcard posta a String o quello che vuoi
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    bene grazie.

    ma come faccio a dire quella wild card a cosa corrisponde? Puoi scrivermi un esempio?


    Thx e sorry 4 l'ingnoranza...

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    L'implementazione sarà qualcosa del genere
    codice:
    public void testmethod(Map<String, Integer> s){
       s.put("ciao",new Integer(5));
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    ecco esatto, anch'io avevo pensato che fosse cosi'. ma quando se provo il compilatore mi dà il seguente errore:

    Codice PHP:

    "mytest.java"test.mytest is not abstract and does not override abstract method testmethod(java.util.Map<java.lang.String,?>) in test.testinterface at line 5, column 1 
    come mai?

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    nessuno sa darmi una spiegazione?

    Graaaaazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.