2015-06-02 11 views
5

Nun, ich habe eine Schnittstelle, die ist;Java-Wildcard-Typ Sicherheitswarnung

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

Und ich implementiere es. Hier ist, was, wenn ich die Definition Funktion wie:

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

      return this; 
    } 
} 

Ich warne auf Funktion initialisieren bekommen, das ist ‚Art Sicherheit: Der Ausdruck des Typs ... ungehemmt Umwandlung muss anzupassen ...‘.

Ich kann dies mit der Verwendung von suppresswarning loswerden, aber ich möchte es nicht verwenden. Was vermisse ich ?

Vielen Dank im Voraus ...

+1

Können Sie bitte die ganze Warnung hinzu? Übrigens sollten Sie Ihre 'initialize' Methode mit' @ Override' implementieren. – Tom

+0

ja du hattest recht, danke für info, aber ich habe unten die richtige antwort bekommen. –

Antwort

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; 
    } 
} 

dies der Compiler wissen würde, welche Art von Schnittstelle Ihre implementieren.

+0

Vielen Dank für Ihre Aufmerksamkeit, dies hat das Problem gelöst. –

4

versuchen diese

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

Ich würde die obere Grenze des generischen Typs 'T' nicht entfernen. – Tom

+1

OK dann habe ich meine Antwort aktualisiert :) –

+0

das ist auch richtig, danke ... –

Verwandte Themen