2015-06-02 13 views
5

Bene, ho un'interfaccia che è;java javascript tipo avviso di sicurezza

public interface abc { 
    public<T extends JPanel> T initalize(); 
} 

E lo sto implementando. Ecco cosa, quando la funzione mi definisce come:

public class Startup_thePanel extends JPanel implements abc { 
    public Startup_thePanel initalize() { 

      return this; 
    } 
} 

mi sto avvertimento sulla funzione inizializzare che è 'di sicurezza di tipo: L'espressione di tipo ... ha bisogno di conversione incontrollato di conformarsi alle ...'.

Posso sbarazzarmi di questo con l'uso di suppresswarning ma non voglio usarlo. Cosa mi manca?

Grazie in anticipo ...

+1

Potete per favore aggiungere l'intera avvertimento? A proposito, dovresti implementare il metodo 'initialize' con' @ Override'. – Tom

+0

sì, avevi ragione, grazie per informazioni, ma ho avuto la risposta giusta sotto. –

risposta

6
public interface abc<T extends JPanel> { 
    public T initalize(); 
} 

public class Startup_thePanel extends JPanel implements abc<Startup_thePanel> { 
    public Startup_thePanel initalize() { 

      return this; 
    } 
} 

Ciò renderebbe il compilatore di sapere quale tipo di interfaccia vostro stanno attuando.

+0

grazie per la vostra attenzione questo ha risolto il problema. –

4

provare questo

public interface abc<T extends JPanel> { 
    public T initalize(); 
} 


public class Startup_thePanel extends JPanel implements abc<Startup_thePanel> { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public Startup_thePanel initalize() { 

      return this; 
    } 
} 
+1

Non rimuoverei il limite superiore del tipo generico 'T'. – Tom

+1

OK, allora ho aggiornato la mia risposta :) –

+0

anche questo è giusto, grazie ... –