2016-07-11 5 views
0

Wie erstelle ich eine Schnittstelle, die beim Überschreiben kann verschiedene Typen haben? Manchmal möchte ich, dass die Methode ein Element vom Typ 'HtmlPage' akzeptiert, und manchmal möchte ich, dass es den Typ 'Dokument' annimmt. Später könnten diese zu noch mehr Typen wechseln.Java Create-Methode in Interface und ändern Sie den Parametertyp

Beispiel:

public interface MyInterface{ 
    void checkThis() throws Exception; 

    Output Show(Input input, String url) throws Exception; 
} 

public class HeadLevel extends MyInterface<HtmlPage,String>{ 
    Output scrape(HtmlPage page, String url) throws Exception; 
} 

public class MyClass implements HeadLevel<Output>{ 
    @Override 
    public void checkThis(Document page, String url){ 

    } 
} 

Ich denke so etwas wie dies sollte erreichbar sein. Ich habe versucht, mich in meinen Suchanfragen mit den Keywords 'Overload' und 'Override' umzusehen, kann aber nichts finden, was so funktioniert. Wie Sie sehen können, hat 'MyClass' die Methode überschrieben und die verwendeten Parameter definiert.

Jede Hilfe, wie dies zu tun ist oder warum Sie dies nicht tun können, wird sehr geschätzt. Mit mehr Informationen, die ich dafür bekomme, werde ich diesen Beitrag aktualisieren und es besser machen. Ich weiß gerade nicht, wie ich das nennen soll.

+0

Zu allererst Ihre Syntax lesen, ist falsch. Zweitens kann die Klasse erweitert werden Eine andere Klasse und nicht die Schnittstelle und die Klasse implementieren die Schnittstelle tatsächlich. – Unknown

+0

Es ist nur eine allgemeine Ähnlichkeit zu meinem Projekt. – L1ghtk3ira

+1

Dies ist technisch nicht möglich, da 'checkThis (Document, String)' 'checkThis()' nicht überschreiben kann. Wenn Sie uns jedoch mitteilen, was Sie damit erreichen möchten, können wir möglicherweise eine Problemumgehung finden. – Zircon

Antwort

0

In diesem Fall brauchen Sie keine Schnittstelle, es ist nicht möglich zu tun, was Sie wollen, Sie müssen das Konzept der Schnittstellen verstehen, bevor Sie es verwenden.

https://docs.oracle.com/javase/tutorial/java/concepts/interface.html

+0

Gibt es eine Möglichkeit, dies mit einer Schnittstelle zu erreichen? – L1ghtk3ira

+0

Oder vielleicht eine Alternative, die ähnlich wäre? – L1ghtk3ira

+0

Warum möchten Sie Schnittstellen verwenden? Was willst du wirklich tun, erkläre dein Problem. – Renan

0

Die Implementierung ich suchte erwies sich jedoch nicht existieren gibt es eine bessere Art und Weise der Lage sein, zu tun, was ich war auf der Suche für Ein- und Ausgabe verwenden.

public interface MyInterface<Input, Output> { 
    void checkThis(Input input, Output output) throws Exception; 

    Output Show(Input input, String url) throws Exception; 
} 

public class HeadLevel extends MyInterface<HtmlPage,String>{ 
    Output scrape(HtmlPage page, String url) throws Exception; 
} 

public class MyClass implements HeadLevel<Output>{ 
    @Override 
    public void checkThis(Document page, String url){ 

    } 
} 

Es scheint die Antwort war tatsächlich unter meiner Nase. Ich habe missverstanden, welche Input/Output-Typen sind und wie Sie sie verwenden können. Input und Output können zu jeder Zeit sein, von der Sie erwarten, dass Sie in eine Art Anwendung kommen oder gehen.

Eingang ist alle Informationen, die von Ihrem Programm benötigt wird seine execution.There sind viele Formulare ausfüllen, die Programmeingabe

Eingang können die Form von vielen verschiedenen Typen wie Htmlpage nehmen, Dokument und Zeichenfolge. Mithilfe der Eingabe können Sie Ihre Methode überschreiben und Ihre gewünschten Typen haben.

Sie können mehr über Input und Output here

+0

Niemals eine Methode mit 'throws Exception' deklarieren. –

+0

Normalerweise verwendet man für generische Typen einzelne Großbuchstaben, d.h. "I" oder "O", so dass man sie nicht mit tatsächlichen Klassen verwechselt. Sie könnten natürlich auch das generierte 'Exception' generisch machen ....: 'public interface MyInterface ' – Turing85

+0

Ich benötige die Methode mit geworfener Exception in meiner Implementierung. – L1ghtk3ira

Verwandte Themen