2016-05-30 11 views
1

Ich habe eine Schnittstelle MLService, die grundlegende Methoden im Zusammenhang mit Ausbildung und Kreuz Validierung eines Machine Learning-Algorithmus hat, muss ich zwei weitere Schnittstelle klassifizieren und sagen, welche MLService implementieren und enthalten Methoden entweder zu klassifizieren und ein Merkmal zu erhalten oder die Wahrscheinlichkeit von mehreren Merkmalen in Abhängigkeit von meinem Algorithmus vorherzusagen, müssen die spezifischen Implementierungsmethoden in der Klasse, die entweder klassifizieren oder vorhersagen, vom MLService Objekt aufgerufen werden. Wie sollte dies entworfen werden, um die spezifizierte Funktionalität zu erreichen ?Klasse Design: Klasse implementieren eine Schnittstelle implementieren eine andere Schnittstelle

+0

Vor Java 8, Schnittstellen enthalten keine Algorithmen und sind daher nicht in der Lage zu „rufen“ Code verwenden. – Smutje

+1

Auch in Java sollten 8 Schnittstellen keine Algorithmen enthalten. Aber es gibt seltene Fälle, die von dieser Regel abweichen. Z.B. um die Rückwärtskompatibilität Ihrer API aufrechtzuerhalten. Wie das JDK es für die Unterstützung funktionaler Funktionen tut. – Kai

+0

@Smutje: meine Sorge hier ist, dass eine Referenz der MLService-Schnittstelle in der Lage sein kann, eine Methode zu nennen, die definiert wird in sagen wir klassifizieren Schnittstelle (die MLService erweitert) und implementiert in einer Klasse (sagen wir SVMServiceImpl, die Klassifizierungsschnittstelle implementiert) .. ich will um dies irgendwie zu erreichen. – SakshamB

Antwort

0

Ihrem Beispiel in Kommentar betrachtet, können Sie Objekt Typisierungen zu nennen Methode eines anderen (Child) -Schnittstelle

public class SVMServiceImpl implements Classify,AnotherInterface{ 


    public static void main(String[] args) 
    { 
     MLService mlserv = new SVMServiceImpl(); 
     /** 
     * Your Algo-based on this below's typecasting should happen 
     */ 
     ((Classify)mlserv).classifyMethod();//or ((AnotherInterface)mlserv).anotherMethod(); 

    } 
}