Zugriff auf jede Kind-Klasse Eltern-Klasse in Java
Implementierung einer Logik, Wonach ein Kind geschenkt-Klasse, ich brauche Zugang zu der übergeordneten Klasse und alle anderen Kind-Klasse, die Elternklasse, wenn überhaupt. Ich fand keine API in Java-Reflexion, die ermöglicht uns den Zugriff auf alle untergeordneten Klassen einer übergeordneten Klasse. Gibt es eine Möglichkeit, es zu tun?
Beispiel:
class B extends class A
class C extends class A
Nun mit der Klasse B, ich finde die Superklasse durch den Aufruf getSuperClass()
. Aber gibt es eine Möglichkeit zu finden, alle Kind-Klassen, sobald ich die übergeordnete Klasse, also der Klasse B und der Klasse C??
- Waren Sie dieses spezifische problem, wie Hausaufgaben, oder Sie wurden, legen Sie ein anderes problem, und dieses hat als Teil der Umsetzung der Lösung? Ich Frage, weil eine andere Lösung könnte sein, zu kommen, um einen anderen Ansatz, um Ihre set-problem.
- dies ist eine der Anforderungen an den Hausaufgaben und wird nicht mit irgendeiner anderen Anforderung/Problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn dies nicht Hausaufgaben (wo 3rd-party-librares sind wohl nicht erlaubt), hätte ich vorgeschlagen Google Reflexionen'
Reflexionen#getSubTypesOf()
.Können Sie dies tun, die mehr oder weniger selbst durch das Scannen des classpath selbst, beginnend mit
ClassLoader#getResources()
, wobei Sie übergeben""
als name.Sind Sie richtig: es gibt keine direkte API für diese. Ich denke, man könnte die überprüfung aller geladenen Klassen und sehen, wenn Sie eine Unterklasse einer Klasse.
Ein problem: Sie werden nur in der Lage zu finden, die Klassen, die bereits geladen sind. Keine dieser Methoden finden Klassen, die noch nicht geladen wurden, noch.
Können Sie verwenden:
Ich vor kurzem gecodet etwas zu Scannen, die Mitglieder einer Klasse, und wenn diese waren nicht-primitive Scannen Sie diese ebenfalls. Allerdings habe ich nicht die traverse nach oben, so dass ich nicht verwenden Sie die oben genannten Methoden, aber ich glaube, Sie sollten tun, was Sie wollen.
BEARBEITEN:
Ich lief einen einfachen test mit den folgenden:
Nach, dass es eine Frage der Codierung der Traversierung. Wenn seine parametrisiert dann die Dinge kann ein wenig kompliziert, aber immer noch ziemlich machbar.
EDIT: Sorry, hatte nicht sorgfältig gelesen, lassen Sie mich schauen weiter in Sie.
EDIT: Es scheint nicht zu irgendeiner Weise, es zu tun, ohne Prüfung alles, was in Ihrem CLASSPATH und überprüfen, um sicherzustellen, dass ein Objekt eine Instanz einer Klasse.