Superklasse und Klassen ausgeben

Cyneon

Mitglied
Ich habe diese Vorgabe:" public static List<String> classes(Object o)". Ich möchte jetzt alle benutzten Klassen in meinem Projekt nach Superklasse -> Klasse-> Unterklasse sortieren. Also die Ausgabe sollte so aussehen:

Superklasse: class Object //root
Packages : java.io, java.lang // alle benutzten "packages". Reihenfolge ist egal
Klassen: BufferReader //Hier sollte es hierarchisch sortiert sein.
(
class java.util.AbstractCollection
class java.util.AbstractList
class java.util.ArrayList
)
Methoden: .read(); // Sollen direkt nach der Klasse kommen in der sie enthalten sind.


Ich habe keine Ahnung wie ich das umsetzen könnte. Ich habe mal ohne die Voraussetzung versucht dies zu machen.

Code:
import java.util.*;
public class Test
{
    public static void main (String args [])
    {
      classesname();
    }
    
    public static void classesname()
    {
    ArrayList<String> neueListe = new ArrayList<String>();
    Class<?> b = neueListe.getClass();
    Class<?> s =b.getSuperclass();
    Class<?> t = s.getSuperclass();
    Class<?> a = t.getSuperclass();
    Class<?> c = a.getSuperclass();
    System.out.println(b + "\n" + s + "\n" + t + "\n" + a + "\n" + c);
    }
}

Output:
class java.util.ArrayList
class java.util.AbstractList
class java.util.AbstractCollection
class java.lang.Object
null

Mein Ansatz ist ziemlich umständlich.
Vielleicht wisst ihr weiter.
 

Schesam

Bekanntes Mitglied
Reflection ist das Stichwort:
Java:
public static void main(String[] args) {
        try {
            Class c = Class.forName("java.util.ArrayList");
            Field[] fields = c.getDeclaredFields();
            Constructor[] constructors = c.getDeclaredConstructors();
            Method[] methods = c.getDeclaredMethods();
            Package aPackage = c.getPackage();
            Annotation[] annotations = c.getAnnotations();
            Class[] interfaces = c.getInterfaces();
            Class[] memberClasses = c.getClasses();
            Class superclass = c.getSuperclass();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
    }
Sind einige Methoden, die dir evtl weiterhelfen könnten
 

Cyneon

Mitglied
Hallo Schesam. Ich habe es leider nicht mit den Superklassen hinbekommen. Heißt wenn ich von meiner Klasse alle Superklassen bis hin zu java.lang.Object wiedergeben möchte.


Code:
Class[] memberClasses = klasse.getClasses();
        for(int i = 0; i<memberClasses.length -1; i++) {
            System.out.println(memberClasses[i].getName());
        }

Jedoch zeigt er mir hier nichts. Mache ich nur
sysout(memberClasses) => [Ljava.lang.Class;@2a139a55
Gibt er mir ein Array aus. Das Array ist aus irgendeinem Grund 0;
 

thecain

Top Contributor
Weil du mit sysout(memberClasses) auch das Array ausgibst. In deinem CodeSnippet stehts aber anders (auf den ersten Blick sogar korrekt)
 

Cyneon

Mitglied
Das Problem ist, dass in diesem Array nichts drin ist. Das verstehe ich nicht ganz.
Dabei müsste rein theoretisch aber:
class java.util.AbstractList
class java.util.AbstractCollection
class java.lang.Object
das vorhanden sein. Aber ich vermute getClasses() ist hier falsch.
 

thecain

Top Contributor
Achso.. Dann ja...
So wäre ein Ansatz:

Java:
class Bar {

}

public class Foo extends Bar {
    public static void main(String... args) {
        Class clazz = Foo.class;
        do {
            System.out.println(clazz.getName());
        }while((clazz = clazz.getSuperclass()) != null);


    }
}

gibt aus
Code:
Foo
Bar
java.lang.Object
 

Schesam

Bekanntes Mitglied
Du Willst die oberklasse, also rufe getSuperclass(); auf. Mit getClasses(); Bekommst du die Klassen der inneren Klassen deiner Klasse, sollten diese vorhanden sein.

Mit den Superklassen kann man es wie Cain machen, oder über Rekursion:
Java:
public static void printSuperClasses(Class clazz) {
        if (clazz != null) {
            System.out.println(clazz.getName());
            printSuperClasses(clazz.getSuperclass());
        }
    }
Gibt auch aus:
Java:
java.util.ArrayList
java.util.AbstractList
java.util.AbstractCollection
java.lang.Object
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Subklasse soll alle Klassen/Pakete der Superklasse importieren Java Basics - Anfänger-Themen 3
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
C Initialiseren einer Superklasse Java Basics - Anfänger-Themen 2
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15
N Mit Objekt der Superklasse auf Methode der Subklasse zugreifen Java Basics - Anfänger-Themen 6
Kirby.exe Methode aus Superklasse benutzen Java Basics - Anfänger-Themen 18
V Vererbung Subklasse soll Superklasse verändern Java Basics - Anfänger-Themen 2
F Java - Superklasse BUG Java Basics - Anfänger-Themen 1
M Vererbung Superklasse -> Subklasse Java Basics - Anfänger-Themen 3
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P auf superklasse zugreifen Java Basics - Anfänger-Themen 24
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
D Instanz einer Subklasse anhand deren Superklasse Java Basics - Anfänger-Themen 5
A Array in Subklasse - Werte aus Superklasse Java Basics - Anfänger-Themen 4
gamebreiti Problem mit Setter in Superklasse Verkettung der Kostruktoren??? Java Basics - Anfänger-Themen 7
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
F Superklasse nochmals erzeugen? Java Basics - Anfänger-Themen 7
A Vererbung Wie auf Variablen der Superklasse zugreifen? Java Basics - Anfänger-Themen 10
M Vererben von Superklasse ohne Konstruktor Java Basics - Anfänger-Themen 9
G Auf einen bestimmten Konstruktor in der abstrakten Superklasse zugreifen? Java Basics - Anfänger-Themen 2
W Superklasse Konstruktor Java Basics - Anfänger-Themen 9
K Methodenvererbung durch eine Superklasse Java Basics - Anfänger-Themen 7
M OOP Klasse mit Superklasse instanzieren Java Basics - Anfänger-Themen 3
D Klassen Problem - Übergabe an Konstruktor von Superklasse Java Basics - Anfänger-Themen 2
E Der Konstruktor der Superklasse Java Basics - Anfänger-Themen 8
K Polymorphie Objektreferenz als Superklasse anstatt des Objekttypes Java Basics - Anfänger-Themen 12
capgeti Datentypen Static methoden aus Superklasse mit Generics definieren? Java Basics - Anfänger-Themen 9
G Vererbung mit einer Instanz aus der Superklasse Java Basics - Anfänger-Themen 2
G Zugriff auf Superklasse Java Basics - Anfänger-Themen 13
N Zugriff auf Vaiablen inhalte der superklasse Java Basics - Anfänger-Themen 7
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
J Klassen Problem Java Basics - Anfänger-Themen 8
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9

Ähnliche Java Themen


Oben