Java:Wie nennen Implementierte Methode aus dem interface-Namen
Ich weiß nicht, wie die Schnittstelle funktioniert, für mein problem aber ich habe gelesen, dass seine mögliche Schnittstellen hier
Problem: ich habe ein interface geschaffen, das Alle die Deklaration der Methoden rund 3000+ ich bin die Implementierung dieser Methoden in 3 verschiedenen Klassen, jetzt möchte ich nennen, die Methoden aus der Schnittstelle in meine main-Datei, Grund kann ich brauchen keine Methode aus einer Klasse und ich kann nicht verlängern, die mehr als eine Klasse, so dass ich dachte über die Verwendung von interface.
Kann ich diese Antworten werden geschätzt.
Update: mit verlängern, die ich verwenden kann super.methodName();
So, dass ich nicht ein Objekt erstellt wird.
Ich kann aufgeteilt werden diese Methoden in verschiedenen Oberflächen oder verschiedenen Klassen, aber ich muss Zugriff auf die Methoden ohne Sie das Objekt erstellen Sie Bitte die link zu verstehen, was ich tun möchte.
Update2: Interface ABC
//public int go()
Funktion deklariert ist hier
Class XYZ implements ABC
method go(object imp)
{.....}
Anderen Klasse
Class PQR extends/implements ABC
{
//some code
int ret = super.go(this); OR int ret = obj.go(this)
} //What Should I use I now ABC is my interface but dont know where is it implemented so i want to call the go function how can I do this Please Explain what should i use.
Dank
- 3000+ - Methoden in das interface?
- Verstehe ich richtig, dass Sie teilen möchten, auf die Implementierung der Schnittstelle (3000-Methoden) über 3 verschiedene Klassen (1000 Methoden jeder) ? Oder wollen Sie, um alle von Ihnen in jeder der 3 Klassen ? Das erste ist unmöglich. Die zweite ist. Jedoch, es ist eindeutig etwas falsch, wenn du 3000+ Methoden in einer einzigen Schnittstelle.
- Wenn du 3000+ Methoden (oder Zeilen spielt keine Rolle) in eine Schnittstelle,... du machst es falsch und Sie haben nicht verstanden, das Konzept der Interfaces (oder OOP). Auch, wenn ich Sie richtig verstehe, sollten Sie 3 verschiedene Schnittstellen statt.
- Gut, Sie könnte verwenden Sie Vererbung auf Klassen, so dass es funktionieren würde. dennoch, wie es scheint, seltsame code-Struktur, du hast Recht
- Sie sind richtig, habe ich übersehen diese Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim Aufruf einer Methode in einer Schnittstelle, die es eigentlich ruft die Implementierung der Methode auf die konkrete Klasse. Es spielt keine Rolle, dass Sie eine wahnsinnige Anzahl von Methoden oder wie viele Klassen haben Sie. z.B.
BTW: Es ist nur eine relativ kleine Anzahl von Klassen, welche für die 3000 Zeilen, geschweige denn 3000 Methoden. Ich nehme an, dies ist der generierte code.
super
Schlüsselwort.super
Schlüsselwort nicht einen Unterschied machen an den Aufrufer der Schnittstelle.ABC
ist Schnittstellego
Methode und ich haben für die Anwendung dieser Methode inxyz
Klasse jetzt will ich mit dieser Implementierung inpqr
Klasse mit Hilfe vonABC
ich weiß nicht, wo die Methode implementiert istsuper
auf eine Methode implementiert, die in einer übergeordneten Klasse (keine Schnittstelle). Zum Aufruf der gleichen Methode auf eine andere Instanz Sie können einfach anrufenobj.go()
aber Sie haben, um eine Referenz zu diesem Objekt.Lassen Sie eine Schnittstelle und Z Klassen A und B Umsetzung von Z. Z hat eine Methode m1().
Du erklären z1, als der Typ Z, aber die Umsetzung ist A. das Gleiche gilt für die z2 aber für B.
Wenn Sie sprechen über generierten code ich denke, was Sie brauchen, ist zum laden einer Klasse zur Laufzeit. Sie können nicht rufen Sie die Methoden einer Schnittstelle, ohne dass diese Methoden implementiert, die in einer konkreten Klasse und (ohne) eine Schnittstelle "Referenz-Objekt", dass die Punkte auf eines instanziierten Objekts (dass die diese Schnittstelle implementiert).
So eine Lösung wäre die Verwendung der Reflexion, über die ich schlage vor, Sie nehmen einen Blick. Dies wird Ihnen eine Idee geben, wie eine Klasse zu laden, rufen Sie die Methoden und Argumente zur Laufzeit, nicht zur compile-Zeit. (d.h. Sie rufen kann, auch diejenigen Methoden, die nach der Dinosaurier-Klasse generiert wurde)
Einem kleinen Beispiel finden Sie unter: http://java.sun.com/developer/technicalArticles/ALT/Reflection/